1. 程式人生 > >Spark部分聚合操作的API總結

Spark部分聚合操作的API總結

本文主要簡單的講講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合併。