Unable to log spark job output
我已经在scala中创建了一个小程序,可以在spark环境中运行。我有一个独立的群集配置。我提交了作业,并且作业在工作者计算机上成功运行。我可以在控制台中看到结果,但是当我打开浏览器以查看工作日志时,它不会在标准输出中打印任何内容。只有stderr有一些日志。我正在使用println进行打印以在程序中进行打印。我错过了什么吗?
这是程序
1 2 3 4 5 6 7 8 9 10 11 | object SimpleJob { def main(args: Array[String]) { val logFile ="/var/log/syslog" // Should be some file on your system val conf = new SparkConf().setAppName("Spark log file reader"); val sc = new SparkContext(conf) val logData = sc.textFile(logFile, 2).cache() val numAs = logData.filter(line => line.contains("a")).count() val numBs = logData.filter(line => line.contains("b")).count() println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) } } |
更新
这是我的log.properties文件。
1 2 3 4 5 6 7 8 9 10 11 12 | # Set everything to be logged to the console log4j.rootCategory=INFO, stdout log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # Settings to quiet third party logs that are too verbose log4j.logger.org.spark-project.jetty=WARN log4j.logger.org.spark-project.jetty.util.component.AbstractLifeCycle=ERROR log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO |
我认为我在评论中张贴的Zero323答案链接为您找到了答案。基本上,工作程序输出将没有输出,但驱动程序将包含该日志记录。主程序中的所有内容,而不是闭包中的所有内容,都将通过驱动程序运行。
这是一个伪程序示例,其中注释了日志将在何处结束:
1 2 3 4 5 6 7 8 9 10 11 |
此外,根据提供的链接,我相当肯定stderr显示log4j输出,而stdout显示