java - 在 hadoop jar 调用中将参数传递给 log4j.properties
问题描述
我有一个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
?
如果我能更清楚,请告诉我。
解决方案
推荐阅读
- vba - 从 SharedMailbox 文件夹获取电子邮件
- css - 如何更改 Bootstrap 4 范围滑块颜色?
- docker - Docker compose 不适用于多个项目
- c++ - 如何声明一个未知大小的数组,然后输入直到我想要,然后获取数组的大小?
- java - 如何测试@Transactional 方法,其中两个表正在更新
- javascript - 用jquery隐藏divtag
- reactjs - React Native Invariant Violation:未找到名称 img 的视图配置
- php - 使用脚本标签内的刀片 @foreach 渲染 HTML
- python - 如何使用 Python 根据有关日期值的条件删除重复项?
- geolocation - 经纬度在 10 到 20 年内变化的频率