我想初始化一个包含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)
任何人都可以指导我如何做到这一点
答案 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))