Java 除了修改hadoop-env.sh之外,如何在hadoop中指定系统属性?
我想在运行hadoop作业时设置系统属性(而不是hadoop属性)。我发现设置系统属性并不容易。甚至我在shell中设置了属性Java 除了修改hadoop-env.sh之外,如何在hadoop中指定系统属性?,java,hadoop,system-properties,Java,Hadoop,System Properties,我想在运行hadoop作业时设置系统属性(而不是hadoop属性)。我发现设置系统属性并不容易。甚至我在shell中设置了属性 export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value" 它仍然不起作用。hadoop命令行的“-D”选项仅用于配置,不用于系统属性。因此“-D”选项也不起作用 有人有想法吗?谢谢为什么不在通过命令行启动作业时直接使用-Dfoo.bar=example内联,如下所示: hadoop jar example.jar com.e
export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"
它仍然不起作用。hadoop命令行的“-D”选项仅用于配置,不用于系统属性。因此“-D”选项也不起作用
有人有想法吗?谢谢为什么不在通过命令行启动作业时直接使用
-Dfoo.bar=example
内联,如下所示:
hadoop jar example.jar com.example.ExampleTool-Dfoo.bar=示例参数
为了获取代码中的属性,使用conf.get(“foo.bar”)代码>
现在,如果确实需要将其设置为系统属性,可以在代码开始时使用从Hadoop config获得的值进行设置,如下所示:
String property = conf.get("foo.bar");
System.setProperty("foo.bar", property);
当通过命令行启动作业时,为什么不直接使用-Dfoo.bar=example
内联,如下所示:
hadoop jar example.jar com.example.ExampleTool-Dfoo.bar=示例参数
为了获取代码中的属性,使用conf.get(“foo.bar”)代码>
现在,如果确实需要将其设置为系统属性,可以在代码开始时使用从Hadoop config获得的值进行设置,如下所示:
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"
hadoop
脚本像这样调用java类
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
因此,我们可以像这样传递系统范围的属性:
export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
我们可以看到您用于启动作业的命令吗?您是否在使用工具运行程序
或通用选项解析器
呢?我们可以看到您用来启动作业的命令吗?您是否在使用ToolRunner
或GenericOptionsParser
呢?原因是我使用的库需要获取系统属性我看到了,我已经为您编辑了一个潜在解决方案的答案。原因是我使用的库需要获取系统属性我看到了,我已经为您编辑了一个潜在解决方案的答案。