如何初始化具有n对零的RDD

时间:2017-11-05 16:02:56

标签: scala apache-spark initialization rdd

我想初始化一个包含n对零的RDD。 例如:n = 3,预期结果为:

init: RDD[(Long, Long)] = ((0,0), (0,0), (0,0))

我需要初始化n对RDD。它可能是数千,或数十万,甚至数百万。 如果我使用带有Scala代码的for循环,那么将其转换为RDD。这需要很长时间。

var init: List[(Long, Long)] = List((0,0))
for(a <- 1 to 1000000){
  init = init :+ (0L,0L)
}
val pairRDD: RDD[(Long, Long)] = sc.parallelize(init)

任何人都可以指导我如何做到这一点

1 个答案:

答案 0 :(得分:4)

您可以使用spark.range从start开始并行初始化rdd:

val rdd = spark.range(1000000).map(_ => (0, 0)).rdd
// rdd: org.apache.spark.rdd.RDD[(Int, Int)] = MapPartitionsRDD[13] at rdd at <console>:23

rdd.take(5)
// res9: Array[(Int, Int)] = Array((0,0), (0,0), (0,0), (0,0), (0,0))