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

Apache spark Spark—从运行Spark submit的JAR加载log4j,apache-spark,log4j,spark-submit,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.log4

我已经为我的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
我把我的项目打包到一个罐子里,然后在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中的日志文件吗

正如我对类所做的那样:--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

我没有尝试过纱线,但在本地模式和集群模式下效果很好。

嗨!感谢您的回答:)我已经尝试过了,我得到了这个错误“log4j:error无法从URL[文件:log4j.properties].java.io.FileNotFoundException:log4j.properties(没有这样的文件或目录)”。是的,对不起,尝试不使用--driver java options和--conf.So:spark submit--class com.path.to.class.InitialContactDriver\--driver java options“-Dlog4j.configuration=log4j.properties”\--conf“spark.executor.extraJavaOptions=Dlog4j.configuration=log4j.properties”\--driver class path/home/cloudera/SNAPSHOT.jar\--master thread/home/cloudera/SNAPSHOT.jar这完全解决了我的问题。非常感谢!:)它对纱线有效吗。。。因为我在纱线簇模式下尝试了所有这些选项,但没有成功