一起学spark(7) -- 键值对RDD(pair rdd)

键值对RDD是Spark中许多操作所需要的常见数据类型。通常用来进行聚合运算。

键值对即所谓的 key-value 形式的数据,比如 ('name','Lucy')  name 是 key , Lucy 是value。
创建pair rdd 通常是用map

pairs = lines.map(lambda x:(x.split()[0],x))  #创建pair rdd ,key 为 x.split()[0]

Pair Rdd 的转化操作如下(以键值对集合{(1,2),(3,4),(3,6)} 为例)

reduceByKey(func)       #合并具有相同键的值,注意是转换操作,reduce是行动操作  
rdd.reduceByKey(lambda x,y:x+y)  #{(1,2),(3,10)}
groupByKey()            #对相同的键的值进行分组
rdd.groupByKey()        #{(1,[2]),(3,[4,6])}
combineByKey(createCombiner,mergeValue,mergeCombiners)  #使用不同的返回类型合并具有相同键的值
rdd.combineByKey((lambda x:[x]),(lambda x,y:x+[y]),(lambda x,y:x+y)) #等同rdd.groupByKey ,但效率更高,后面介绍原因
#aggregateByKey 同 combineByKey 需要提供初始值
mapValues(func)         #对pair RDD中的每个值应用 
rdd.mapValues(lambda x:x+1)  #{(1,3),(3,5),(3,7)}
flatMapValues(func)    #同上面一样,只不过会扁平化 ,类似 flatMap 和 map 的区别
keys()            #返回键  rdd.keys() {1,3,3}
values()          #返回值  rdd.values() {2,4,6}
sortByKey()       #根据键值排序 rdd.sortByKey() {(1,2),(3,4),(3,6)}

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值