Spark部分聚合操作的API總結
阿新 • • 發佈:2018-12-30
本文主要簡單的講講Spark幾個常用的聚合操作的API的使用和之間的一些區別。
- 建立一個JavaRDD和一個JavaPairRDD
reduce
執行結果
reduceByKey
執行結果
- aggregate
執行結果
- aggregateByKey
執行結果
- groupBy
執行結果
- groupByKey
執行結果
- fold
執行結果
- foldByKey
執行結果
combineByKey
執行結果
通過上面的程式碼結合官方的API介紹可以得出以下結論:reduce和aggregate都是action操作,返回一個結果,而aggregateByKey和reduceByKey都是transformation操作;
- aggregate和aggregateByKey 會現在本節點內先聚合,然後再聚合所有節點的結果,而reduce和reduceByKey則不會;
- reduce和reduceByKey的輸入和輸出結果型別要一樣,而aggregateByKey和aggregate的輸入和輸出結果型別可以不一樣;
- groupBy和groupByKey都是在所有節點內進行分組,groupBy按照每個元素新生的key進行分組,而groupBykey必須是對JavaPairRdd按照已有的key進行聚合;
- fold和foldByKey要求輸入和輸出型別一樣,flod對所有的值進行聚合,而flodByKey是分別對相同key的value進行聚合;
- combineByKey可以輸入輸出的型別不一樣,第一次遇到key,先建立組合器C,不是第一次遇到的key的value合併成C,然後把兩個C-C合併。