Spark函数:cogroup

       cogroup:对两个RDD中的KV元素,每个RDD中相同key中的元素分别聚合成一个集合。与reduceByKey不同的是针对两个RDD中相同的key的元素进行合并。


测试例子1

将多个RDD中同一个Key对应的Value组合到一起。

data1中不存在Key为3的元素(自然就不存在Value了),在组合的过程中将data1对应的位置设置为CompactBuffer()了,而不是去掉了。



测试例子2

<span style="font-size:18px;">val DBName=Array(
  Tuple2(1,"Spark"),
  Tuple2(2,"Hadoop"),
  Tuple2(3,"Kylin"),
  Tuple2(4,"Flink")
)
val numType=Array(
  Tuple2(1,"String"),
  Tuple2(2,"int"),
  Tuple2(3,"byte"),
  Tuple2(4,"bollean"),
  Tuple2(5,"float"),
  Tuple2(1,"34"),
  Tuple2(1,"45"),
  Tuple2(2,"47"),
  Tuple2(3,"75"),
  Tuple2(4,"95"),
  Tuple2(5,"16"),
  Tuple2(1,"85")
)
val names=sc.parallelize(DBName)
val types=sc.parallelize(numType)
val nameAndType=names.cogroup(types)  //基于key进行join 结果并没有顺序
nameAndType.collect.foreach(println)</span>


输出结果:

<span style="font-size:18px;">(4,(CompactBuffer(Flink),CompactBuffer(bollean, 95)))
(1,(CompactBuffer(Spark),CompactBuffer(String, 34, 45, 85)))
(3,(CompactBuffer(Kylin),CompactBuffer(byte, 75)))
(5,(CompactBuffer(),CompactBuffer(float, 16)))
(2,(CompactBuffer(Hadoop),CompactBuffer(int, 47)))</span>


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值