我想通過GenericOptionsParser將多個配置參數傳遞給我的Hadoop作業。我們可以在GenericOptionsParser中用-D選項設置多個通用參數嗎?
使用「-D abc = xyz」我可以傳遞一個參數並且能夠從配置對象中檢索相同的內容,但我無法傳遞多個參數。
是否可以傳遞多個參數?如果是,如何?
我想通過GenericOptionsParser將多個配置參數傳遞給我的Hadoop作業。我們可以在GenericOptionsParser中用-D選項設置多個通用參數嗎?
使用「-D abc = xyz」我可以傳遞一個參數並且能夠從配置對象中檢索相同的內容,但我無法傳遞多個參數。
是否可以傳遞多個參數?如果是,如何?
我測試了傳遞多個參數,我多次使用-D
標誌。
$ HADOOP_HOME /斌/ Hadoop的罐子/path/to/my.jar -D mapred.heartbeats.in.second = 80 -D了mapred.map.max.attempts = 2 ...`
這樣做會將值更改爲我在作業配置中指定的值。
傳遞的參數爲-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
在這種情況下,我越來越 color = yellow number = null – samarth
您可能錯過了一些東西 - Nija也能夠做到這一點,如在其他答案中提到的。 –
我最近運行在從Hadoop 1.2.1升級到Hadoop 2.4.1後遇到此問題。問題在於Hadoop對commons-cli 1.2的依賴被忽略,原因是與Cassandra 2.0.5引入的commons-cli 1.1衝突。
快速瀏覽源代碼後,它看起來像具有未初始化數量值(Hadoop的GenericOptionsParser所做的操作)的commons-cli選項在版本1.1中默認限制爲1,在1.2中沒有限制。
我希望有幫助!
其實這是另一種方式。根據[Hadoop - 權威指南](http://shop.oreilly.com/product/0636920010388.do) - '不要將使用-D property = value選項的Hadoop屬性與GenericOptionsParser(和ToolRunner)混淆在一起使用java命令的-Dproperty = value選項設置JVM系統屬性。 JVM系統屬性的語法不允許D和屬性名稱之間有任何空格,而GenericOptionsParser要求它們之間用空格分隔。「 –
@PraveenSripati:更新我的答案是沒有錯的。 :) – Nija