RDD操作

RDD操作

1.对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作

函数名目的示例结果

map()

函数应用于RDD中的每个元素rdd.map(x=>x+1){2,3,4,4}
flatMap()将函数应用于RDD中的每个怨毒,通常用来切分单词rdd.flatMap(x=>x.to(3)){1,2,3,2,3,3,3}
filter()返回一个通过传给filter()的函数的元素组成的RDDrdd.filter(x=>x!=1){2,3,3}
distinct()去重rdd.distinct()

{1,2,3}

sample(withReplacement,fraction,[seed])对RDD进行采样,以及是否替换rdd.sample(false,0.5)非确定

2.对数据分别为{1,2,3}和{3,4,5}的RDD进行针对两个RDD的转化操作

函数名目的示例结果
union()生成一个包含两个RDD中所有元素的RDDrdd.union(other){1,2,3,3,4,5}
intersection()求两个RDD共同的元素RDDrdd.intersection(other){3}
subtract()移除一个元素的内容rdd.subtract(other){1,2}
cartesian()与另一个RDD的笛卡儿积rdd.cartesian(other){(1,3),(1,4)...(3,5)}

3.对一个数据为{1,2,3,3}的RDD进行基本的RDD行动操作

函数名目的示例结果
collect()所有元素rdd.collect(){1,2,3,3}
count()元素个数rdd.count()4
countByValue()各元素在rdd中出现的次数rdd.countByValue(){(1,1),(2,1),(3,2)}
take(num)从rdd中返回num个元素rdd.take(2){1,2}
top(num)从rdd中返回最前面的num个元素rdd.top(2){3,3}
takeOrdered(num)(ordering)按提供的顺序,返回最前面的怒骂个元素rdd.takeOrdered(2)(myOrdering){3,3}
takeSample(withReplacement,num,[seed])从rdd中返回任意一些元素rdd.takeSample(false,1)非确定的
reduce(func)冰雷整合RDD中的所有数据rdd.reduce((x,y)=>x+y)9
fold(zero)(func)和reduce一样,但是需要初始值rdd.fold(0)((x,y)=>x+y)9
aggregate(zeroValue)(seqOp,combOp)和reduce()相似,但是通常返回不同类型的函数

rdd.aggregate((0,0))((x,y)=>(x,y)=>(x._1+y,x._2+1),(x,y)=>(x._1+y._1,x._2+y._2))

(9,4)
foreach(func)对RDd中的每个元素使用给定的元素rdd.foreach(func)

键值对操作

4.pair RDD的转化操作(以键值对集合{(1,2),(3,4),(3,6)}为例)

函数名目的示例结果
reduceByKey(func)合并具有相同键的值rdd.reduceByKey((x,y)=>x+y){(1,2),(3,10)}
groupByKey()对具有相同键的值进行分组rdd.groupByKey(){(1,[2]),(3,[4,6])}
combineByKey(createCombiner,mergeCombiners,partitioner)使用不同的返回类型合并具有相同键的值  
mapValue(func)对pairRDD中的每个值应用一个函数而不改变键rdd.mapValues(x=>x+1){(1,3),(3,5),(3,7)}
flatMapValues()对pairRDD中的每个值应用一个返回迭代器的函数,然后返回的每个元素都生成一个对应原键的键值对记录,通常用于符号化rdd.flatMapValues(x=>(x to 5)){(1,2),(1,3),(1,4),(1,5),(3,4),(3,5)}
keys()返回一个仅包含键的RDDrdd.keys(){1,3,3}
values()返回一个仅包含值的RDDrdd.values(){2,4,6}
sortByKey()返回一个根据键排序的RDDrdd.sortByKey(){(1,2),(3,4),(3,6)}

针对两个pairRDD的转换操作(rdd={(1,2),(3,4),(3,6)} other={(3,9)})

函数名目的示例结果
subtractByKey删掉RDD中的键与otherRDD中的键相同的元素rdd.subtractByKey(other){(1,2)}
join对两个rdd进行内链接rdd.join(other){(3,(Some(4),9)),(3,(Some(6),9))}
rightOuterJoin连接操作,确保第一个rdd的键必须存在(右外连接)rdd.rightOuterJoin(other){(3,(4,Some(9))),(3,(4,Some(9)))}
leftOutrtJoin连接操作,确保第二个rdd的键必须存在(左外连接)rdd.leftOuterJoin(other){(1,(2,None)),(3,(4,Some(9))),(3,(6,Some(9)))}
cogroup将两个rdd中拥有相同键的数据分组到一起rdd.cogroup(other){(1,([2],[])),(3,([4,6],[9]))}

5.PairRDD 的行动操作(以键值对集合{(1,2),(3,4),(3,6)})

函数描述示例结果
countByKey()对每个键对应的元素分别计数rdd.countByKey(){(1,1),(3,2)}
collectAsMap()将结果以映射表的形式返回,以便查询rdd.collectAsMap()Mqp{(1,2),(3,4),(3,6)}
lookup(key)返回给定键对应的所有值rdd.lookup(3)[4,6]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值