2019獨角獸企業重金招聘Python工程師標準>>>
我們知道RDD就是一個不可變的帶分區的記錄集合,Spark提供了RDD上的兩類操作,轉換和動作。轉換是用來定義一個新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,動作是返回一個結果,包括collect, reduce, count, save, lookupKey。
首先要注意一點,就是分區,那么:
- 如果一個RDD的依賴的每個分區只依賴另一個RDD的同一個分區,就是narow,如圖上的C和D,D和F,B和G,這樣就不需要進行shuffle,同時還可以按照流水線的方式,把一個分區上的多個操作放在一個Task里進行,如圖上覆蓋C,D,F的紅色陰影。
- 如果一個RDD的每個分區需要依賴另一個RDD的所有分區,就是wide,如圖上的A和B,F和G,這樣的依賴需要進行shuffle,需要更多的運算。
作者:用心閣
鏈接:https://www.zhihu.com/question/37137360/answer/70608128
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。