最近在負責Spark Streaming 結合 Spark Sql的相關項目,語言是Java,留下一些筆記,也供大家參考,如有錯誤,請指教!
基本概念:
1.RDD(Resilient Distributed Dataset):彈性分布式數據集。
2.RDD是只讀的,由多個partition組成
3.Partition分區,和Block數據塊是一一對應的
RDD管理:
1.Driver:保存block數據,并且管理RDD和Block的關系
2.Executor 會啟動一個BlockManagerSlave,管理Block數據并向BlockManagerMaster注冊該Block
3.當RDD不再需要存儲的時候,BlockManagerMaster將向BlockManagerSlave發送指令刪除相應的Block。
RDD操作:
Transformation:轉換算子,這類轉換并不觸發提交作業,完成作業中間過程處理。
Action:行動算子,這類算子會觸發SparkContext提交Job作業。
RDD的依賴關系有兩種:窄依賴(narrow dependency)和寬依賴(wide dependency)。
窄依賴:每一個parent RDD的Partition最多被子RDD的一個Partition使用
寬依賴:多個子RDD的Partition會依賴同一個parent RDD的Partition