• 5.2 RDD编程---键值对RDD


    一、键值对RDD的创建

    1.从文件中加载

    2.通过并行集合(数组)创建RDD

    二、常用的键值对RDD转换操作

    1.reduceByKey(func)

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

    2.groupByKey()

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

    3.keys

    4.values

    5.sortByKey()

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

     

    6.mapValues(func)

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

    7.join

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

    8.combineByKey 

    combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner,mapSideCombine)

    createCombiner:在第一次遇到Key时创建组合器函数,将RDD数据集中的V类型值转换C类型值(V => C)

    mergeValue:合并值函数,再次遇到相同的Key时,将createCombiner的C类型值与这次传入的V类型值合并成一个C类型值(C,V)=>C 

    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表示某天图书销量,请计算每个键对应的平均值,也就是计算每种图书的每天平均销量。

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/11811930.html
Copyright © 2020-2023  润新知