apache-spark - Spark——从运行 spark-submit 的 JAR 加载 log4j

标签 apache-spark log4j spark-submit

我已经为我的 spark 应用程序开发了一个自定义 log4j:

#######################
#    Roll by time     #
#######################
log4j.logger.myLogger=DEBUG, file 
log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.file.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.RollingPolicy.FileNamePattern = contactabilidad_%d{yyyy-MM-dd-hh}.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C:%L - %m%n
log4j.appender.file.encoding=UTF-8
log4j.appender.file.MaxFileSize=5MB

我将我的项目打包到一个 JAR 中,然后在 spark-submit 中运行它。

我只是想将日志写入文件,正如我所做的那样,当文件 log4j.properties 从我运行 spark-submit 的地方进入文件系统时,我在其中定义了这条路径命令 java-options.

spark-submit --class com.path.to.class.InitialContactDriver 
--driver-java-options "-Dlog4j.configuration=file:log4j.properties" 
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties" 
--master yarn    /home/cloudera/SNAPSHOT.jar

我的观点是: 我不能引用 JAR 中的日志文件吗?

content inside of the JAR

正如我对类所做的那样:--class com.path.to.class.InitialContactDriver

我将在有限的环境中运行该应用程序,我不想将文件上传到 FS,只需使用我在 JAR 中的文件即可。 那可能吗?如果不是,为什么不呢?

提前致谢! :)

最佳答案

您必须在命令中提供 --driver-class-path 选项。尝试:

spark-submit --class com.path.to.class.InitialContactDriver \
--driver-java-options "-Dlog4j.configuration=file:log4j.properties" \
--conf "spark.executor.extraJavaOptions=Dlog4j.configuration=file:log4j.properties" \
--driver-class-path /home/cloudera/SNAPSHOT.jar \
--master yarn    /home/cloudera/SNAPSHOT.jar

我没有尝试过使用 YARN,但在本地模式和集群模式下工作正常。

关于apache-spark - Spark——从运行 spark-submit 的 JAR 加载 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536961/

相关文章:

java - Spark 作业与 yarn-client 一起正常工作,但与 yarn-cluster 完全不工作

apache-spark - Kubernetes 上的 SparkPi - 找不到或加载主类?

python - 运行 spark 作业 : python vs spark. 提交

java - Spark : java. lang.NoClassDefFoundError: com/mongodb/hadoop/MongoInputFormat

scala - 如何为 Spark 数据帧编写多个 WHEN 条件?

Log4j : Multiple loggers, 级别和附加程序

java - Spring 日志不是用 log4j2 写的

java - 查找丢失异常堆栈跟踪的日志语句

scala - 如何捕获 Spark 异常并做某事?

apache-spark - EMR 事件的数据管道失败