Spark算子:RDD基本转换操作(7)–zipWithIndex、zipWithUniqueId

zipWithIndex

def zipWithIndex(): RDD[(T, Long)]

该函数将RDD中的元素和这个元素在RDD中的ID(索引号)组合成键/值对。

def main(args: Array[String]): Unit = {
  //默认分区12个
  val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("test").set("spark.default.parallelism", "12"))
  var rdd2 = sc.makeRDD(Array('A','B','C','D','E'),2)
  var rdd3 = rdd2.zipWithIndex()
  rdd3.collect.foreach(println(_))
}

16/12/20 14:23:41 INFO DAGScheduler: Job 1 finished: collect at ShellTest.scala:23, took 0.050251 s
(A,0)
(B,1)
(C,2)
(D,3)
(E,4)

16/12/20 14:23:41 INFO SparkContext: Invoking stop() from shutdown hook

 

zipWithUniqueId

def zipWithUniqueId(): RDD[(T, Long)]

该函数将RDD中元素和一个唯一ID组合成键/值对,该唯一ID生成算法如下:

每个分区中第一个元素的唯一ID值为:该分区索引号,

每个分区中第N个元素的唯一ID值为:(前一个元素的唯一ID值) + (该RDD总的分区数)

def main(args: Array[String]): Unit = {
  //默认分区12个
  val sc = new SparkContext(new SparkConf().setMaster("local").setAppName("test").set("spark.default.parallelism", "12"))
  var rdd2 = sc.makeRDD(Array('A','B','C','D','E'),2)
  var rdd3 = rdd2.zipWithUniqueId()
  rdd3.collect.foreach(println(_))
}

16/12/20 14:25:55 INFO DAGScheduler: Job 0 finished: collect at ShellTest.scala:23, took 0.568861 s
(A,0)
(B,2)
(C,1)
(D,3)
(E,5)

16/12/20 14:25:55 INFO SparkContext: Invoking stop() from shutdown hook

 

 

转载于:https://my.oschina.net/chensanti234/blog/808972

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值