2

我想在运行 hadoop 作业时设置系统属性(不是 hadoop 属性)。我发现设置系统属性并不容易。即使我在 shell 中设置属性

export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"

它仍然无法正常工作。hadoop命令行的“-D”选项只用于配置,不用于系统属性。所以“-D”选项也不起作用

有人有想法吗?谢谢

4

2 回答 2

7

为什么不在-Dfoo.bar=example通过命令行启动作业时简单地使用 in-line ,如下所示:

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);
于 2013-03-20T10:02:09.770 回答
5

脚本像这样hadoop调用java类

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"

所以,我们可以像这样传递系统范围的属性:

export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
于 2015-06-09T04:20:08.920 回答