Spark编程之基本的RDD算子之zip,zipPartitions,zipWithIndex,zipWithUniqueId

Spark编程之基本的RDD算子之zip,zipPartitions,zipWithIndex,zipWithUniqueId

  • 1) zip拉链操作

首先来看一下基本的api。

def zip[U: ClassTag](other: RDD[U]): RDD[(T, U)]
1

自身的RDD的值的类型为T类型,另一个RDD的值的类型为U类型。zip操作将这两个值连接在一起。构成一个元祖值。RDD的值的类型为元祖。
都是第i个值和第i个值进行连接。
zip函数用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常

val a = sc.parallelize(1 to 100, 3)
val b = sc.parallelize(101 to 200, 3)
a.zip(b).collect
//可以看到每个值都是对应的。
res1: Array[(Int, Int)] = Array((1,101), (2,102), (3,103), (4,104), 
(5,105), (6,106), (7,107), (8,108), (9,109), (10,110), (11,111), (12,112), 
(13,113), (14,114), (15,115), (16,116), (17,117), (18,118), (19,119), 
(20,120), (21,121), (22,122), (23,123), (24,124), (25,125), (26,126), 
(27,127), (28,128), (29,129), (30,130), (31,131), (32,132), (33,133)...123456789
val a = sc.parallelize(1 to 100, 3)
val b = sc.parallelize(101 to 200, 3)
val c = sc.parallelize(201 to 300, 3)
//同样也可以多次进行zip操作,则返回的元祖值包含有多个值。
a.zip(b).zip(c).map((x) => (x._1._1, x._1._2, x._2 )).collect
res12: Array[(Int, Int, Int)] = Array((1,101,201)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值