1、RDDs的血統關係圖
Sprak維護着RDDs之間的依賴關係和創建關係,叫做血統關係圖.
Spark使用血統關係圖來計算每個RDD的需求和恢復丟失的數據.
2、延遲計算
Spark對RDDs的計算是他們第一次使用action操作的時候.
這種數據在處理大數據的時候特別有用,可以減少數據的傳輸.
Spark內部記錄metadata表名transformations操作已經被響應了.
加載數據也是延遲計算,數據只有在必要的時候,纔會被加載進去.
3、RDD.persist()
默認每次在RDDs上面進行actions操作時,Spark都重新計算RDDs.
如果想重複利用RDD,可以使用RDD.persist()
unpersist方法從緩存中移除
2、KeyValue對RDDs
2.1創建KeyValue對RDDs
使用map()函數,返回Key/Value對.例如:包含數行數據的RDD,把每行數據的第一個單詞作爲keys.
2.2 KeyValue對RDDs的操作
2.2.1 reduceByKey
2.2.2 groupByKey()
2.2.3
2.2.4 RDDs的keys和values
2.2.5 sortByKey
2.2.6 combineByKey
最常用的基於Key的聚合函數,返回的類型可以與輸入類型不一致,許多基於Key的聚合函數都用到了它,像GroupByKey()
遍歷partition中的元素,元素的key,要麼之前見過的,要麼不是.
如果是新元素,使用我們提供的creatCombiner()函數
如果是這個partition中已經存在的key,就會使用mergeValue()函數
合計每個partition結果的時候,使用mergeCombiners()函數
例子:求平均值
掃下面的二維碼,加關注,下次查找更容易