Spark部分聚合操作的API总结

来源:互联网 发布:java log日志打印 编辑:程序博客网 时间:2024/05/17 02:33

本文主要简单的讲讲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合并。
原创粉丝点击