Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 除了修改hadoop-env.sh之外,如何在hadoop中指定系统属性?_Java_Hadoop_System Properties - Fatal编程技术网

Java 除了修改hadoop-env.sh之外,如何在hadoop中指定系统属性?

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

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

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
呢?原因是我使用的库需要获取系统属性我看到了,我已经为您编辑了一个潜在解决方案的答案。原因是我使用的库需要获取系统属性我看到了,我已经为您编辑了一个潜在解决方案的答案。