如何将Spark日志的标准输出重定向到控制台?

3
当我的Spark应用程序失败时,它会在控制台上记录一个非常通用的消息。为了查看揭示真实错误的详细消息,我必须转到Spark历史服务器并查看执行器的stdout日志。有人知道如何让额外的详细信息出现在控制台中吗?我一直在查看一些链接,这些链接指向log4j属性文件,但是检查该文件后,我认为它已经正确设置:
# Set everything to be logged to the console
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
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
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR

一些额外的细节:

  • 我正在使用PySpark
  • 这些是由Spark SQL生成的错误
  • 我在群集模式下使用Yarn Master运行
1个回答

1
为了让log4j.properties文件按预期工作,需要将以下内容添加到spark-submit中(假设log4j.properties在类路径中):
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties" 
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties" 

但是最重要的是,您需要确保在yarn客户端模式下执行spark-submit,否则您的驱动程序将在集群上的一个节点上启动,并且您将无法在控制台上看到其日志。
要在yarn集群模式下检查执行spark-submit时的日志,请使用以下命令(需要在yarn-site.xml中设置yarn.log-aggregation-enable=true):
yarn logs -applicationId <applicationId> 

{btsdaf} - dobbysock1002
{btsdaf} - joshi.n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接