Ответ 1
Нет никаких дополнительных привилегий, но параметры командной строки запускаются через 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"
}
Одно последнее предупреждение: если вы используете метод конфигурации 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
}