功能:使用func函数合并具备相同键的值编程
功能:对具备相同键的值进行分组数组
默认按升序排序,括号里写false为降序排序ide
功能:对键值对RDD中的每一个value都应用一个函数,key不会发生变化。函数
功能:把几个RDD当中元素key相同的进行链接oop
combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner,mapSideCombine)spa
createCombiner:在第一次遇到Key时建立组合器函数,将RDD数据集中的V类型值转换C类型值(V => C)3d
mergeValue:合并值函数,再次遇到相同的Key时,将createCombiner的C类型值与此次传入的V类型值合并成一个C类型值(C,V)=>C blog
mergeCombiners:合并组合器函数,将C类型值两两合并成一个C类型值 排序
partitioner:使用已有的或自定义的分区函数,默认是HashPartitioner mapSideCombine:是否在map端进行Combine操做,默认为true内存
注意:前三个函数的参数类型要对应;第一次遇到Key时调用createCombiner,再次遇到相同的Key时调用mergeValue合并值
例:编程实现自定义Spark合并方案。给定一些销售数据,数据采用键值对的形式<公司,收入>,求出每一个公司的总收入和平均收入,保存在本地文件
提示:可直接用sc.parallelize在内存中生成数据,在求每一个公司总收入时,先分三个分区进行求和,而后再把三个分区进行合并。只须要编写RDD combineByKey函数的前三个参数的实现。
题目:给定一组键值对("spark",2),("hadoop",6),("hadoop",4),("spark",6),键值对的key表示图书名称,value表示某天图书销量,请计算每一个键对应的平均值,也就是计算每种图书的天天平均销量。