spark map函数中使用println无法输出

问题

   // 每个点为hardData中的一个Array
    val hardData = spark.read.textFile(args(0)).rdd
      .map(_.split(" ").map(_.toDouble).toArray)
      .cache()

    hardData.map(a => println(a(0).toString + " " + a(1).toString +
      " " + a(3).toString))

结果中没有输出

解决

参考 https://stackoverflow.com/questions/33225994/spark-losing-println-on-stdout

由于spark面向大数据量和分布式,在使用map函数输出时存在各种问题:可能输出到各个主机、数据量过大等问题。

因此,spark在设计时使map函数中不能使用println输出信息流

将map函数改为foreach则有输出...

posted @ 2017-11-29 22:06  extendswind  阅读(2180)  评论(0编辑  收藏  举报