Scala Spark不在地图功能的控制台上打印输出
我有一个在集群模式下运行的简单Spark应用程序Scala Spark不在地图功能的控制台上打印输出,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我有一个在集群模式下运行的简单Spark应用程序 val funcGSSNFilterHeader = (x: String) => { println(!x.contains("servedMSISDN") !x.contains("servedMSISDN") } val ssc = new StreamingContext(sc, Seconds(batchIntervalSeconds)) val ggsnFileLines = ssc.fileStream
val funcGSSNFilterHeader = (x: String) => {
println(!x.contains("servedMSISDN")
!x.contains("servedMSISDN")
}
val ssc = new StreamingContext(sc, Seconds(batchIntervalSeconds))
val ggsnFileLines = ssc.fileStream[LongWritable, Text, TextInputFormat]("C:\\Users\\Mbazarganigilani\\Documents\\RA\\GGSN\\Files1", filterF, false)
val ggsnArrays = ggsnFileLines
.map(x => x._2.toString()).filter(x => funcGSSNFilterHeader(x))
ggsnArrays.foreachRDD(s => {println(x.toString()})
我需要打印!x、 在map函数中包含(“servedsisdn”)以进行调试,但这不会在控制台上打印您的代码包含驱动程序(主/主)和执行器(在群集模式下的节点上运行)
在“映射”中运行的函数在执行器上运行
i、 e.当您处于集群模式时,执行print inside map函数将导致打印到节点控制台(您将看不到) 为了调试程序,您可以:
请注意,除了本地与集群模式之外,您的代码中似乎有一个输入错误:
ggsnArrays.foreachRDD(s => {println(x.toString()})
应该是:
ggsnArrays.foreachRDD(s => {println(x.toString)})
两种可能性:
您的日志位于工作节点上,因此必须检查工作日志中的这些日志消息。如前所述,您可以在本地模式下运行应用程序以检查计算机上的日志。顺便说一句,使用i.e.SLF4j比使用println更好,但我认为这只是为了学习:)
在代码段中没有
ssc.start()
和ssc.awaitTermination()
。你运行这些命令了吗?否则,foreachRDD将不会在任何时候执行。如果示例正常,请在脚本末尾添加这些行并重试,但请检查工作节点日志:)在本地模式下运行对于此类调试非常有用。当您在map函数内部和map函数外部打印其他内容(例如“hello”)时,会发生什么情况?我想在群集模式下打印它们..当您处于“本地模式”时,是否在map函数内部打印?当您处于群集模式时,打印到控制台将在节点中完成,因此,您不会在driverhow的控制台中看到它,然后在群集模式下在驱动程序控制台上打印它们。。。