scala - Spark 不会在 map 函数内的控制台上打印输出

标签 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[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 函数内执行打印将导致打印到节点控制台(您不会看到)。

为了调试程序,您可以:

  • 在“本地”模式下运行代码,“ map 函数”中的打印将打印在您的“主/主节点”的控制台上,因为执行器在同一台机器上运行
  • 将“打印到控制台”替换为保存到文件/保存到弹性等


  • 注意除了本地 对比 集群 模式 - 您的代码中似乎有一个错字:
    ggsnArrays.foreachRDD(s => {println(x.toString()})
    

    应该:
    ggsnArrays.foreachRDD(s => {println(x.toString)})
    

    关于scala - Spark 不会在 map 函数内的控制台上打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324082/

    相关文章:

    json - Lift-json 操作 - 添加到正确的位置

    scala - 在 Scala REPL 中运行 spark 时出错 - 访问被拒绝 org.apache.derby.security.SystemPermission( "engine", "usederbyinternals")

    scala - Spark 卡拉: Performance degrade with simple UDF over large number of columns

    algorithm - 将前 10% 的未排序 RDD 作为 Spark 中的另一个 RDD 返回的有效方法?

    java - 未找到类 Spark Streaming 和 kafka

    java - 为什么 Spark 运行时内存少于可用内存?

    java - Spark Streaming,foreachRDD 错误 : Comparison method violates its general contract

    scala - Spark - 连接后如何避免重复列?

    scala - 主机级 akka-http 客户端连接的生存时间

    hadoop - 在 spark submit 中将 hdfs 路径作为环境变量传递