我有一个 log4j.properties
文件,其中包含以下行:
log4j.appender.fileOut.File=${log.dir}/${stage}_${date}.log
如果仅使用Java(而不是Hadoop MapReduce),则可以使用以下功能:
java -cp <jar_dependencies> -Dstage=matching -Ddate=2018-11-26 -Dlog.dir=/tmp/project_folder/log/ -Dlog4j.configuration=file:path/to/conf/log4j.properties main_class
即正确传递并替换了 log4j参数。但是,当尝试运行mapReduce作业进行
hadoop jar
命令行调用时:hadoop jar <input_jar_here.jar> -Dstage=matching -Ddate=2018-11-26 -Dlog.dir=/tmp/project_folder/log/ -Dlog4j.configuration=file:path/to/conf/log4j.properties -libjars <jar_dependencies>
它不起作用,即未传递/替换参数。
注意:如果我在log4j.properties中对参数值进行硬编码,则以前的 hadoop jar 调用会起作用。
如何传递参数,以便考虑到
log4j.properties
调用将其相应地填充/设置在hadoop jar
文件中?请让我知道是否可以更清楚。
最佳答案
关于java - 将参数传递给hadoop jar调用中的log4j.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54393032/