博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PairRDD中算子aggregateByKey图解
阅读量:6474 次
发布时间:2019-06-23

本文共 750 字,大约阅读时间需要 2 分钟。

PairRDD 有几个比较麻烦的算子,常理解了后面又忘记了,自己按照自己的理解记录好,以备查阅

1、aggregateByKey

    aggregate 是聚合意思,直观理解就是按照Key进行聚合。

    转化: RDD[(K,V)] ==> RDD[(K,U)] 

     可以看出是返回值的类型不需要和原来的RDD的Value类型一致的。

     在聚合过程中提供一个中立的初始值。

    原型:

    def  aggregateByKey[U:ClassTag](zeroValue:U, partitioner:Partitioner)(seqOp:(U,V) =>U, comOp:(U,U) =>U):RDD[(K,U)]

    def  aggregateByKey[U:ClassTag](zeroValue:U, numPartitions:Int)(seqOp:(U,V) =>U, comOp:(U,U) =>U):RDD[(K,U)]

    def  aggregateByKey[U:ClassTag](zeroValue:U)(seqOp:(U,V) =>U, comOp:(U,U) =>U):RDD[(K,U)]

    1、 第一个可以自己定义分区Partitioner; 2、第二个设置了分区数,最终定义了和HashPartitioner; 3、第三个会判断当前RDD是否定义分区函数,如果定义了则用当前的分区函数,没定义,则使用HashPartitioner

       例子:

        >val data = sc.parallelize(List((1,2),(1,4),(2,3)))

        > data.aggregateByKey(3)((x,y)=>math.max(x,y) ,(z,m)=>z+m)

         >Array((1,7)(2,3))

 

 

         

 

转载地址:http://asvko.baihongyu.com/

你可能感兴趣的文章
Java Web 高性能开发
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>
论程序员加班的害处
查看>>
codeblocks快捷键
查看>>
基于HTML5的WebGL设计汉诺塔3D游戏
查看>>
WPF资料链接
查看>>
再次更新
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
查询指定名称的文件
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
开篇,博客的申请理由
查看>>
Servlet 技术全总结 (已完成,不定期增加内容)
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
centos 7 部署LDAP服务
查看>>
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>