Apache spark 如何将Spark日志标准重定向到控制台

Apache spark 如何将Spark日志标准重定向到控制台,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,当我的spark应用程序失败时,它会向控制台记录一条非常通用的消息。为了查看显示真实错误的详细消息,我必须转到Spark History Server并查看执行器的标准输出日志。有人知道我如何在控制台中显示其他详细信息吗?我一直在查看一些指向log4j属性文件的链接,但查看该文件时,我认为它已正确设置: # Set everything to be logged to the console log4j.rootCategory=WARN, console log4j.appender.cons

当我的spark应用程序失败时,它会向控制台记录一条非常通用的消息。为了查看显示真实错误的详细消息,我必须转到Spark History Server并查看执行器的标准输出日志。有人知道我如何在控制台中显示其他详细信息吗?我一直在查看一些指向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
其他一些细节:

  • 我正在使用Pypark
  • 这些是Spark SQL生成的错误
  • 我在群集模式下与纱线大师一起运行

要使
log4j.properties
文件按预期工作,需要将以下内容添加到
spark submit
(假设
log4j.properties
位于类路径中):

但最重要的是,您需要确保在
warn客户端模式下执行
spark submit
,否则您的驱动程序将在集群上的一个节点上启动,并且您不会在控制台上看到其日志

要检查
spark submit
纱线簇模式下的日志,请使用此选项(需要
warn.log aggregation enable=true
warn site.xml
中):

纱线原木-应用程序ID

这是否意味着如果在群集模式下运行,则无法将输出路由到控制台?我唯一的选择是运行纱线日志语句?据我所知,这是正确的。在控制台上打印日志更像是一个调试练习,为此,运行spark应用程序的正确方法是在客户端或独立模式下。调试完成后,切换回集群模式应该是正确的方法。
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties" 
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties" 
yarn logs -applicationId <applicationId>