Передать параметры в log4j.properties в вызове hadoop jar - PullRequest
0 голосов
/ 28 января 2019

У меня есть файл 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?

Пожалуйста, дайте мне знать, если я могу быть более ясным.

1 Ответ

0 голосов
/ 28 января 2019

С hadoop doc

-D свойство = значение Использовать значение для данного свойства.

Похоже, что вместо -D вместо синтаксиса Java должен быть пробел

-Dproperty = value

...