Никаких дополнительных привилегий нет, но параметры командной строки запускаются через GenericOptionsParser, который позволит вам извлечь определенные свойства конфигурации и настроить объект конфигурации из него:
http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/util/GenericOptionsParser.html
По сути, вместо того, чтобы анализировать некоторые параметры самостоятельно (используя индекс аргумента в списке), вы можете явно настроить свойства конфигурации из командной строки:
hadoop jar myJar.jar com.Main prop1value prop2value
public static void main(String args[]) {
Configuration conf = new Configuration();
conf.set("prop1", args[0]);
conf.set("prop2", args[1]);
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
Становится гораздо более сжатым с помощью ToolRunner:
hadoop jar myJar.jar com.Main -Dprop1=prop1value -Dprop2=prop2value
public int run(String args[]) {
Configuration conf = getConf();
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
Последнее слово предупреждения: при использовании метода Configuration getConf () сначала создайте свой объект Job, а затем извлеките его конфигурацию - конструктор Job создает копию переданного объекта Configruation, поэтому, если вы делаетеизменения в переданной ссылке, ваша работа не увидит эти изменения:
public int run(String args[]) {
Configuration conf = getConf();
conf.set("prop3", "blah");
Job job = new Job(conf); // job will have a deep copy of conf
conf.set("prop4", "dummy"); // here we're amending the original conf
job.getConfiguration().get("prop4"); // will resolve to null
}