';收集';在Spark独立应用程序的驱动程序窗口中未显示操作结果 [英] 'collect' action not displaying result in driver window for Spark standalone application
本文介绍了';收集';在Spark独立应用程序的驱动程序窗口中未显示操作结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在本地系统上使用的是Spark 1.4.0。每当我创建一个RDD并通过Spark的Scala外壳对其调用Collect时,它都工作得很好。但是,当我创建一个独立的应用程序并在RDD上调用‘Collect’操作时,我看不到结果,尽管运行期间的Spark消息说已经为驱动程序设置了一定数量的字节:-
INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 1991 bytes result sent to driver
INFO Executor: Finished task 1.0 in stage 0.0 (TID 1). 1948 bytes result sent to driver
代码如下:-
object Test
{ def main(args:Array[String])
{
val conf = new SparkConf()
val sc = new SparkContext(conf)
val rdd1 = sc.textFile("input.txt")
val rdd2 = rdd1.map(_.split(",")).map(x=>( (x(0),x(1)) ))
rdd2.collect
}
}
如果我将最后一条语句更改为以下语句,它确实会显示结果:-
rdd2.collect.foreach(println)
所以问题是,为什么只调用‘Collect’不打印任何东西?
推荐答案
collect
在控制台应用程序上不会显示任何内容,因为它所做的只是返回数据。您必须执行某些操作才能显示它,就像您使用foreach(println)
所做的那样。或者,在一般情况下对其执行某些操作,如将其保存到磁盘。
spark-shell
(减去SparkContext
创建)中运行该代码,那么您确实会看到输出*,因为外壳总是调用所返回对象的toString
。
*请注意,toString
与foreach(println)
不同,因为外壳会在某个时刻截断
这篇关于';收集';在Spark独立应用程序的驱动程序窗口中未显示操作结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文