我有一个 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
i、 e.正确传递和替换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中的参数值,那么前面的hadoopjar调用就可以工作。
如何传递参数,以便在 log4j.properties
文件考虑 hadoop jar
打电话?
如果我能说得更清楚,请告诉我。
1条答案
按热度按时间ztigrdn81#
来自hadoop文档
-d property=value使用给定属性的值。
看起来应该在-d后面有空格而不是java语法
-D属性=值