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合并。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值