1.DataFrame和RDD最大的區(qū)別幢痘?
DataFrame和RDD的區(qū)別在于:
(1).DataFrame多了結(jié)構(gòu)信息战授;
(2).DataFrame除了提供比RDD更豐富的算子以外愤估,還可以提升執(zhí)行效率,減少數(shù)據(jù)讀取以及執(zhí)行計(jì)劃的優(yōu)化姆蘸,如:filter優(yōu)化、謂詞下推等非驮。
2.寬依賴和窄依賴
寬依賴:父分區(qū)的數(shù)據(jù)被劃分到多個子分區(qū)(一分區(qū)對多分區(qū))丙笋。GroupByKey雹舀、ReduceByKey芦劣、Join。
窄依賴:父分區(qū)的數(shù)據(jù)被劃分到一個子分區(qū)(一分區(qū)對一分區(qū))说榆。map虚吟、filter寸认。
3.RDD可持久化
Spark的一個重要功能,就是在不同操作間串慰,持久化(或緩存)一個數(shù)據(jù)集在內(nèi)存中偏塞。當(dāng)持久化一個RDD,每一個節(jié)點(diǎn)都將把它的計(jì)算分塊結(jié)果保存在內(nèi)存中邦鲫。并在對此數(shù)據(jù)集(或者衍生出的數(shù)據(jù)集)進(jìn)行的其它動作中重用灸叼。這將使得后續(xù)的動作變得更加迅速。
4.RDD序列化
在SparkRDD編程中庆捺,初始化工作是在Driver端進(jìn)行的古今,而實(shí)際運(yùn)行程序是在Executor端進(jìn)行的,涉及到了跨進(jìn)程通信滔以,是需要序列化的捉腥。
只有序列化之后的RDD才能使用壓縮機(jī)制。
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
5.Stage的Task數(shù)量由什么決定
并行度:是指指令并行執(zhí)行的最大條數(shù)你画,在指令流水中抵碟,同時執(zhí)行多條指令稱為指令并行。
理論上:每一個stage下有多少分區(qū)坏匪,就有多少task拟逮,task的數(shù)量就是我們?nèi)蝿?wù)的最大的并行度。
一般情況下适滓,我們一個task運(yùn)行的時候敦迄,使用一個cores。
實(shí)際上:最大的并行度粒竖,取決于我們的application任務(wù)運(yùn)行時使用的executor擁有的cores的數(shù)量颅崩。
6.Spark應(yīng)用中的Driver和Executor會把計(jì)算邏輯解析成DAG。
7.Spark的master和worker通過Akka方式進(jìn)行通信蕊苗。
8.RDD是什么?
RDD全稱是彈性分布式數(shù)據(jù)集沿彭。全稱本身并沒有很好地解釋RDD到底是什么朽砰,本質(zhì)上,RDD是Spark用于對分布式數(shù)據(jù)進(jìn)行抽象的數(shù)據(jù)模型喉刘。簡言之瞧柔,RDD是一種抽象的數(shù)據(jù)模型,這種模型用于囊括睦裳、封裝所有內(nèi)存中和磁盤中的分布式數(shù)據(jù)實(shí)體造锅。
RDD五大核心屬性:
屬性名 成員類型 屬性含義
dependencies 變量 生成該RDD所依賴的父RDD
compute 方法 生成該RDD的計(jì)算接口
partitions 變量 該RDD的所有數(shù)據(jù)分片實(shí)體
partitioner 方法 劃分?jǐn)?shù)據(jù)分片的規(guī)則
preferredLocations 變量 數(shù)據(jù)分片的物理位置偏好
9.哪個不是本地模式的運(yùn)行條件
如果提交的job滿足以下條件,那么它將以本地模式運(yùn)行:
(1).spark.localExecution.enabled設(shè)置為true
(2).用戶程序顯示指定可以本地運(yùn)行
(3).finalStage沒有父Stage
(4).僅有一個partition
10.Spark RDD的緩存方式
RDD通過persist方法或cache方法可以將前面的計(jì)算結(jié)果緩存廉邑,但是并不是這兩個方法被調(diào)用時立即緩存哥蔚,而是觸發(fā)后面的action時倒谷,該RDD將會被緩存在計(jì)算節(jié)點(diǎn)的內(nèi)存中,并供后面重用糙箍。
https://blog.csdn.net/a1837634447/article/details/79113306
11.Spark累加器
Spark三大核心數(shù)據(jù)結(jié)構(gòu):
(1).RDD (2).累加器(只寫不讀) (3).廣播變量(只讀不寫)
https://blog.csdn.net/wx1528159409/article/details/87817785