我有一个 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
文件中进行相应的填充/设置?
请让我知道我是否更清楚