Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 回路内的火花接头产生空隙_Scala_Apache Spark - Fatal编程技术网

Scala 回路内的火花接头产生空隙

Scala 回路内的火花接头产生空隙,scala,apache-spark,Scala,Apache Spark,我尝试从循环中的另一个RDD通过迭代联合生成RDD,但如果我对循环中的结果RDD执行操作,则结果只能起作用 var rdd : RDD[Int] = sc.emptyRDD for ( i <- 1 to 5 ) { val rdd1 = sc.parallelize(Array(1)) rdd = rdd ++ rdd1 } // rdd.foreach(println) => void for ( i <- 1 to 5 ) { val rdd1 = sc.

我尝试从循环中的另一个RDD通过迭代联合生成RDD,但如果我对循环中的结果RDD执行操作,则结果只能起作用

var rdd : RDD[Int] = sc.emptyRDD

for ( i <- 1 to 5 ) {
  val rdd1 = sc.parallelize(Array(1))
  rdd = rdd ++ rdd1
}
// rdd.foreach(println) => void

for ( i <- 1 to 5 ) {
  val rdd1 = sc.parallelize(Array(1))
  rdd = rdd ++ rdd1
  rdd.foreach(x=>x)
}
// rdd.foreach(println) => ( 1,1,1,1,1)
var-rdd:rdd[Int]=sc.emptyRDD
因为(我)无效
对于(i x)
}
//rdd.foreach(println)=>(1,1,1,1)
如果我在循环外部创建
rdd1
,那么一切都可以正常工作,但在内部却不行


是否存在一个特定的轻量级操作来解决此问题?

需要记住的一件事是,当您将
foreach
操作应用于RDD时,该操作将应用于每个单独的工作者。因此,在第一种情况下,如果您检查每个执行者的
标准值,您将从中找到打印的值e> rdd
。如果希望将这些值打印到控制台,可以在驱动程序中聚合rdd的元素(或其子集),然后应用您的函数(例如,
rdd.collect.foreach(println)
rdd.take(3).foreach(println)
,等等).

需要记住的一件事是,当您将
foreach
操作应用于RDD时,该操作将同时应用于每个工作者。因此,在第一种情况下,如果您检查每个执行器的
stdout
,您将从
RDD
中找到打印的值。如果您希望将这些值打印到控制台,您可以在驱动程序中聚合RDD的元素(或其子集),然后应用您的函数(例如,
RDD.collect.foreach(println)
RDD.take(3).foreach(println)
,等等)