Можем ли мы установить несколько универсальных аргументов с опцией -D в GenericOptionsParser? - PullRequest
2 голосов
/ 25 января 2012

Я хочу передать несколько параметров конфигурации моему заданию Hadoop через GenericOptionsParser.

С помощью "-D abc = xyz" я могу передать один аргумент и получить его из объекта конфигурации, но я не могу передать множественный аргумент.

Можно ли передать несколько аргументов? Если да, то как?

Ответы [ 3 ]

4 голосов
/ 25 января 2012

Передал параметры как -D color=yellow -D number=10

Имеет следующий код в методе run ()

String color = getConf().get("color");
System.out.println("color = " + color);

String number = getConf().get("number");
System.out.println("number = " + number);

Следующее было o / p в консоли

color = yellow
number = 10
1 голос
/ 03 сентября 2014

Я недавно столкнулся с этой проблемой после обновления с Hadoop 1.2.1 до Hadoop 2.4.1. Проблема в том, что зависимость Hadoop от commons-cli 1.2 была опущена из-за конфликта с commons-cli 1.1, который был извлечен из Cassandra 2.0.5.

После быстрого просмотра источника это выглядит как параметры commons-cli, у которых неинициализированное число значений (что делает GenericOptionsParser в Hadoop) по умолчанию ограничено 1 в версии 1.1 и не имеет ограничения в 1.2.

Надеюсь, это поможет!

0 голосов
/ 25 января 2012

Я протестировал передачу нескольких параметров и несколько раз использовал флаг -D.

$ HADOOP_HOME / bin / hadoop jar /path/to/my.jar -D mapred.heartbeats.in.second = 80 -D mapred.map.max.attempts = 2 ... `

В результате этого значения изменились на значения, указанные в конфигурации задания.

...