在纱线部署模式下在控制台上打印地图功能中的值

Posted

技术标签:

【中文标题】在纱线部署模式下在控制台上打印地图功能中的值【英文标题】: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/… 【参考方案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 方法获得数组后,您可以通过迭代来打印数组元素。

【讨论】:

以上是关于在纱线部署模式下在控制台上打印地图功能中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何将打印在控制台上的值存储为矢量?

如何在没有换行符的情况下在控制台上使用“放置”?

Log4j控制台上的警告

如何在 Laravel 的控制台上打印消息?

如何启用 XMPPFramework 在控制台上打印原始 XML

在没有模式工作台的情况下在 pentaho 5.1 中部署 mondrian 模式