Spark部分聚合操作的API总结

本文主要简单的讲讲Spark几个常用的聚合操作的API的使用和之间的一些区别。

  • 创建一个JavaRDD和一个JavaPairRDD
    Spark部分聚合操作的API总结_第1张图片
  • reduce
    Spark部分聚合操作的API总结_第2张图片
    运行结果
    这里写图片描述

  • reduceByKey
    Spark部分聚合操作的API总结_第3张图片
    运行结果
    这里写图片描述

  • aggregate
    Spark部分聚合操作的API总结_第4张图片
    运行结果
    这里写图片描述
  • aggregateByKey
    Spark部分聚合操作的API总结_第5张图片
    运行结果
    这里写图片描述
  • groupBy
    Spark部分聚合操作的API总结_第6张图片
    运行结果
    这里写图片描述
  • groupByKey
    这里写图片描述
    运行结果
    这里写图片描述
  • fold
    Spark部分聚合操作的API总结_第7张图片
    运行结果
    这里写图片描述
  • foldByKey
    Spark部分聚合操作的API总结_第8张图片
    运行结果
    这里写图片描述
  • combineByKey
    Spark部分聚合操作的API总结_第9张图片
    运行结果
    这里写图片描述
    通过上面的代码结合官方的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合并。

你可能感兴趣的:(spark)