我有一个在集群模式下运行的简单 Spark 应用程序。
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()})
我需要在 map 函数中打印 !x.contains("servedMSISDN") 以进行调试,但这不会在控制台上打印
最佳答案
您的代码包含驱动程序(主/主)和执行程序(以集群模式在节点上运行)。
在“ map ”内运行的函数在执行器上运行
即当您处于集群模式时,在 map 函数内执行打印将导致打印到节点控制台(您不会看到)。
为了调试程序,您可以:
注意除了本地 对比 集群 模式 - 您的代码中似乎有一个错字:
ggsnArrays.foreachRDD(s => {println(x.toString()})
应该:
ggsnArrays.foreachRDD(s => {println(x.toString)})
关于scala - Spark 不会在 map 函数内的控制台上打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324082/