5.2 RDD编程---键值对RDD

1、键值对RDD的建立

1.从文件中加载

2.经过并行集合(数组)建立RDD

2、经常使用的键值对RDD转换操做

1.reduceByKey(func)

功能:使用func函数合并具备相同键的值编程

2.groupByKey()

功能:对具备相同键的值进行分组数组

3.keys

4.values

5.sortByKey()

默认按升序排序,括号里写false为降序排序ide

 

6.mapValues(func)

功能:对键值对RDD中的每一个value都应用一个函数,key不会发生变化。函数

7.join

功能:把几个RDD当中元素key相同的进行链接oop

8.combineByKey 

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函数的前三个参数的实现。

3、综合实例

题目:给定一组键值对("spark",2),("hadoop",6),("hadoop",4),("spark",6),键值对的key表示图书名称,value表示某天图书销量,请计算每一个键对应的平均值,也就是计算每种图书的天天平均销量。

相关文章
相关标签/搜索