[大數據面試]-- 3.Spark 題目

========= 基礎 =========

1、RDD 的 基礎

https://www.jianshu.com/p/fca10efd2315

https://www.jianshu.com/p/6319d6239f03

https://www.jianshu.com/p/64ade88f0e19

https://blog.csdn.net/weixin_38750084/article/details/82955062

源碼

https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala

https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala

https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/PartitionPruningRDD.scala

 

2、driver的功能是什麼?

一個程序,它聲明數據的RDD上的轉換和操作,並將這些請求提交給master

功能

1)、創建SparkContext的程序,連接到給定的SparkMaster

2)、劃分rdd stage 並生成 DAGScheduler

3)、通過taskScheduler生成併發送task到executor

它的位置獨立於master、slave。您在master節點,也可以從另一個節點運行它。唯一的要求是它必須在一個可以從Spark Workers訪問的網絡中

 

2、RDD寬依賴和窄依賴?

  • wide dependency or shuffle dependency:多個子RDD的Partition會依賴同一個父RDD的Partition
  • narrow dependency:每一個父RDD的Partition最多被子RDD的一個Partition使用

 

3、map 和 flatMap、mapPartition 的區別?

map:通過向這個RDD的所有元素應用一個函數來返回一個新的RDD。

flatMap:返回一個新的RDD 首將一個函數應用於該RDD的所有元素,然後將結果展平。

mapPartitions:通過向這個RDD的每個分區應用一個函數來返回一個新的RDD,preservespartitioning 指示輸入函數是否保留分區器,默認爲false,除非這是pairRDD,並且輸入函數不修改keys

 

4、spark中的RDD是什麼?有哪些特性?

RDD是彈性分佈式數據集 不可變的可並行操作的元素的分區集合

每個RDD具有五個主要特性:

1)、有分區列表

2)、可用於計算每個分區的函數

3)、依賴於其他RDD的列表

4)、可選pairRDD的分區器(例如說RDD是哈希分區的)

5)、優先選擇本地最優的位置去計算每個分片(例如,HDFS文件塊位置)即數據的本地性

 

5、spark中如何劃分 stage

stage是一組並行任務,作爲job的部分 計算相同的函數

stage通過是否存在Shuffle或者寬依賴爲邊界來劃分的 如遇到reduceByKey,groupByKey的算子等算子

從當前job的最後一個算子往前推,遇到寬依賴,那麼當前在這個批次中的所有算子操作都劃分成一個stage,然後繼續按照這種方式在繼續往前推,如在遇到寬依賴,又劃分成一個stage,一直到最前面的一個算子。最後整個job會被劃分成多個stage,而stage之間又存在依賴關係,後面的stage依賴於前面的stage

 

 

========= 進階 =========

1、Spark 優化方式

2、Spark 如何防止 OOM

3、Hadoop 和 Spark 的 shuffle有什麼區別

shuffle 是洗牌過程,將數據打亂,然後按照用戶的指示輸出。

4、Spark 爲什麼要持久化?哪些場景需要 persist

持久化是 control 操作,中間結果比較難算出來,而且還需要複用。

比如機器學習

5、什麼是 Transformation 和 action

按需執行的函數。

6、Spark 作業執行原理

7、spark Job 調度流程

8、減少 Spark IO

廣播變量、累加器、減少Shuffle

9、一致性語義有幾個級別

10、CAP 理論

11、Spark-submit --files 和 addFile 的區別

12、spark 如何跳過 失敗的 task

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章