apache-spark - 如何将 Spark 日志记录标准输出重定向到控制台

标签 apache-spark pyspark apache-spark-sql

当我的 Spark 应用程序失败时,它会向控制台记录一条非常通用的消息。为了查看揭示真正错误的详细消息,我必须转到 Spark 历史记录服务器并查看执行程序的标准输出日志。有谁知道如何获得更多详细信息以显示在控制台中?我一直在查看一些指向 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 运行

最佳答案

为了使 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.log-aggregation-enable=true yarn-site.xml):

yarn logs -applicationId <applicationId> 

关于apache-spark - 如何将 Spark 日志记录标准输出重定向到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916497/

相关文章:

python - 如何从 pyspark 数据帧创建 JSON 结构?

python - Pyspark - 如何检查两条记录中哪一条具有最新日期及其列值?

apache-spark - Websphere MQ 作为 Apache Spark Streaming 的数据源

dataframe - pyspark获取一行中每一列的最新非空元素

python - 如何更新 PySpark 中的 MLLIB 版本

apache-spark - pyspark:稀疏向量到 scipy 稀疏矩阵

java - 如何基于列合并两个数据帧spark java/scala?

apache-spark - 当我在 Windows 7 中运行 `first` 或 `take` 方法时,pyspark 崩溃

apache-spark - 创建ElasticSearch索引但消息不出现

apache-spark - 连接 Pyspark 和 Kafka