我想在运行 hadoop 作业时设置系统属性(不是 hadoop 属性)。我发现设置系统属性并不容易。即使我在 shell 中设置属性
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
它仍然无法正常工作。hadoop命令行的“-D”选项只用于配置,不用于系统属性。所以“-D”选项也不起作用
有人有想法吗?谢谢
我想在运行 hadoop 作业时设置系统属性(不是 hadoop 属性)。我发现设置系统属性并不容易。即使我在 shell 中设置属性
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
它仍然无法正常工作。hadoop命令行的“-D”选项只用于配置,不用于系统属性。所以“-D”选项也不起作用
有人有想法吗?谢谢
为什么不在-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);
脚本像这样hadoop
调用java类
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
所以,我们可以像这样传递系统范围的属性:
export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"