【问题标题】:'collect' action not displaying result in driver window for Spark standalone application“收集”操作未在 Spark 独立应用程序的驱动程序窗口中显示结果
【发布时间】:2015-07-25 23:50:10
【问题描述】:

我在本地系统上使用 Spark 1.4.0。每当我创建一个 RDD 并通过 Spark 的 Scala shell 调用它时,它都可以正常工作。但是当我创建一个独立的应用程序并在 RDD 上调用“收集”操作时,我看不到结果,尽管运行期间的 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' 不打印任何东西?

【问题讨论】:

    标签: apache-spark rdd


    【解决方案1】:

    collect 本身在控制台应用程序上不会显示任何内容,因为它所做的只是返回数据。您必须做一些事情来显示它,就像您对foreach(println) 所做的那样。或者,对它进行一般性的处理,例如将其保存到磁盘。

    现在,如果您要在 spark-shell(减去 SparkContext 创建)中运行该代码,那么您确实会看到输出*,因为 shell 始终调用返回的对象的 toString

    *注意toStringforeach(println) 不同,因为shell 在某些时候会截断

    【讨论】:

      猜你喜欢
      • 2017-08-29
      • 2022-10-08
      • 2015-04-28
      • 2016-10-15
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多