2012-01-25 88 views

回答

0

我測試了傳遞多個參數,我多次使用-D標誌。

$ HADOOP_HOME /斌/ Hadoop的罐子/path/to/my.jar -D mapred.heartbeats.in.second = 80 -D了mapred.map.max.attempts = 2 ...`

這樣做會將值更改爲我在作業配置中指定的值。

+4

其實這是另一種方式。根據[Hadoop - 權威指南](http://shop.oreilly.com/product/0636920010388.do) - '不要將使用-D property = value選項的Hadoop屬性與GenericOptionsParser(和ToolRunner)混淆在一起使用java命令的-Dproperty = value選項設置JVM系統屬性。 JVM系統屬性的語法不允許D和屬性名稱之間有任何空格,而GenericOptionsParser要求它們之間用空格分隔。「 –

+0

@PraveenSripati:更新我的答案是沒有錯的。 :) – Nija

4

傳遞的參數爲-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 
+0

在這種情況下,我越來越 color = yellow number = null – samarth

+0

您可能錯過了一些東西 - Nija也能夠做到這一點,如在其他答案中提到的。 –

1

我最近運行在從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中沒有限制。

我希望有幫助!

相關問題