我想在運行hadoop作業時設置系統屬性(不是hadoop屬性)。我發現設置系統屬性並不容易。即使我設置在殼如何在hadoop中指定系統屬性,除了修改hadoop-env.sh?
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
它仍然無法正常工作。 hadoop命令行的「-D」選項僅用於配置,而不是系統屬性。所以「-D」選項也不起作用
任何人有想法嗎?謝謝
我想在運行hadoop作業時設置系統屬性(不是hadoop屬性)。我發現設置系統屬性並不容易。即使我設置在殼如何在hadoop中指定系統屬性,除了修改hadoop-env.sh?
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
它仍然無法正常工作。 hadoop命令行的「-D」選項僅用於配置,而不是系統屬性。所以「-D」選項也不起作用
任何人有想法嗎?謝謝
爲什麼不直接使用在線-Dfoo.bar=example
開始通過命令行工作時,就像這樣:
hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument
爲了獲得在代碼中的屬性,使用conf.get("foo.bar");
現在,如果您確實需要將其設置爲系統屬性,則可以使用您從Hadoop配置中獲得的值在代碼的開頭設置它,如下所示:
String property = conf.get("foo.bar");
System.setProperty("foo.bar", property);
原因是我正在使用需要獲取系統屬性的庫 – zjffdu 2013-03-21 00:38:17
我明白了,我已經編輯了我對您的潛在解決方案的回答。 – Quetzalcoatl 2013-03-21 00:47:07
謝謝,這應該適合我 – zjffdu 2013-03-21 04:41:11
這樣
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]"
所以hadoop
腳本調用Java類,我們可以通過全系統的特性是這樣的:
export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
我們可以看到你正在使用啓動作業的命令?你是否使用'ToolRunner'或'GenericOptionsParser'? – Quetzalcoatl 2013-03-20 10:14:46