【问题标题】:Pass parameters to log4j.properties in hadoop jar call在 hadoop jar 调用中将参数传递给 log4j.properties
【发布时间】:2019-01-27 21:27:08
【问题描述】:

我有一个 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 调用有效。

考虑到 hadoop jar 调用,如何传递参数以便在 log4j.properties 文件中相应地填充/设置它们?

如果我可以更清楚,请告诉我。

【问题讨论】:

    标签: java hadoop logging mapreduce log4j


    【解决方案1】:

    来自hadoop doc

    -D property=value 使用给定属性的值。

    看起来-D后面应该有空格而不是java语法

    -Dproperty=值

    【讨论】:

    • 没有。如果我在传递参数时添加空格,它将不起作用(根据我传递的其他参数的经验)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2016-12-09
    • 2016-01-06
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多