我想在运行hadoop作业时设置系统属性(而不是hadoop属性)。我发现设置系统属性并不容易。我甚至在shell中设置了属性
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
还是不行。hadoop命令行的“-d”选项仅用于配置,不用于系统属性。所以“-d”选项也不起作用有人有主意吗?谢谢
pinkon5k1#
这个 hadoop 像这样脚本调用java类
hadoop
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
所以,我们可以像这样传递系统范围的属性:
export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
s4n0splo2#
检查系统属性和环境变量之间的差异以及如何在此处设置它们。
qmelpv7a3#
为什么不简单地使用 -Dfoo.bar=example 当通过命令行启动作业时,如: hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument 要获取代码中的属性,请使用 conf.get("foo.bar"); 现在,如果确实需要将其设置为系统属性,可以在代码开始时使用从hadoop config获得的值进行设置,如下所示:
-Dfoo.bar=example
hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument
conf.get("foo.bar");
String property = conf.get("foo.bar"); System.setProperty("foo.bar", property);
3条答案
按热度按时间pinkon5k1#
这个
hadoop
像这样脚本调用java类所以,我们可以像这样传递系统范围的属性:
s4n0splo2#
检查系统属性和环境变量之间的差异以及如何在此处设置它们。
qmelpv7a3#
为什么不简单地使用
-Dfoo.bar=example
当通过命令行启动作业时,如:hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument
要获取代码中的属性,请使用conf.get("foo.bar");
现在,如果确实需要将其设置为系统属性,可以在代码开始时使用从hadoop config获得的值进行设置,如下所示: