【问题标题】:Printing values in map function on the console in yarn deployment mode在纱线部署模式下在控制台上打印地图功能中的值
【发布时间】:2016-09-15 00:49:22
【问题描述】:

我开发了一个流媒体应用,该应用有如下地图功能:

probeFileLines.map(x => { println(x._2.toString().take(1)); x._2.toString()})

我需要在驱动程序中的控制台上打印 x._.2...所以我使用了 take 方法,但它没有在控制台上显示任何内容..我在 yarn -client 模式下运行我的应用程序。 . 有一些threads 解决了如何为 RDD 执行此操作,但我的问题有所不同..

【问题讨论】:

  • 你最后缺少动作功能。 Spark 转换是惰性的,在调用 action 之前什么都不做。下面提供的解决方案建议使用打印或夹头;这两个动作功能都可以让您的地图代码运行。 spark.apache.org/docs/latest/…

标签: apache-spark


【解决方案1】:

您可以参考以下方法:

val inputRDDV2 = sc.parallelize(List(1,2,3,4))
val inputRDDV2Map = inputRDDV2.map(num=>num*2).collect()
println("Applying map() to new RDD: ========================> ")
inputRDDV2Map.foreach(println)

【讨论】:

    【解决方案2】:

    你能使用 Spark Streaming 的 print() function?

    val numberToPrint = 10;
    probeFileLines
      .map(x => {
        x._2.toString()
      })
      .print(numberToPrint);
    

    【讨论】:

      【解决方案3】:

      您可以在 RDD 上使用 collect 方法在驱动程序中将 RDD 的所有元素作为数组获取。使用 collect 方法获得数组后,您可以通过迭代来打印数组元素。

      【讨论】:

        猜你喜欢
        • 2017-01-12
        • 2021-05-10
        • 2014-12-06
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 2019-05-19
        • 2016-10-04
        相关资源
        最近更新 更多