我無法訪問Hadoop Tool
實現的命令行配置參數。Hadoop命令行配置不覆蓋默認值?
我正在與該命令而執行:hadoop jar <jar> <mainclass> -D SomeProperty=NewValue
的run(String[] args)
方法開始:
Configuration configuration = this.getConf();
configuration.set("SomeProperty", "DefaultValue");
Options options = new Options();
GenericOptionsParser parser = new GenericOptionsParser(configuration, options, args);
args = parser.getRemainingArgs();
if (configuration.get("SomeProperty").equals("DefaultValue"))
return 1; //Will always return here unless the default value is overridden
屬性SomeProperty
從未被設置爲NewValue
。沒有默認值的新屬性在配置中設置得很好,所以看起來好像問題是命令行參數不覆蓋默認配置值。
這是怎麼發生的?我可以改變這種行爲嗎?
編輯:爲了澄清,如果我調用與hadoop jar <jar> <mainclass> -D SomeProperty=NewValue -D SecondProperty=OtherValue
jar命令,比SecondProperty
將在配置適當設定,SomeProperty
不會和兩者之間的唯一不同的是所使用的GenericOptionsParser
當配置具有已稱爲set("SomeProperty", "DefaultValue")
。
你給-D和屬性名稱之間的空格嗎?您不應在-D和參數名稱之間輸入空格。發佈確切的命令名稱和您輸入的值 –
Ravindra,可以在新版Hadoop版本的命令行中設置屬性。問題是關於GenericOptionsParser的行爲,它無法覆蓋之前通過set()定義的屬性。 – Suriname0