我的问题是我在Oozie作业中找不到从命令行输入的属性。这就是我开始oozie工作的方式:
$ oozie job -config /home/mruser/conf/mapreduce.properties -Dsample.property.filename=/path/to/file/samplefile.txt -run -oozie http://server:11000/oozie
这是java程序的相关代码片段。
Configuration conf = new Configuration();
String configurationLocation = System.getProperty("oozie.action.conf.xml");
Path localConfigurationPath = new Path(configurationLocation);
conf.addResource(localConfigurationPath);
Job job = new Job(conf, "Sample oozie data load");
Configuration.dumpConfiguration(conf, new BufferedWriter(new OutputStreamWriter(System.out)));
String samplePropertyFilenameFromJobConfig = job.getConfiguration().get("sample.property.filename");
String samplePropertyFilenameFromProperty = System.getProperty("sample.property.filename");
在上面的代码“samplePropertyFilenameFromJobConfig”和“samplePropertyFilenameFromProperty”都是null。此外,我在“Configuration.dumpConfiguration()”的输出中找不到我的属性。
然而,当我在Oozie UI中找到我的工作时,我点击了“工作配置”标签,我看到了
<property>
<name>sample.resolution.filename</name>
<value>/path/to/file/samplefile.txt</value>
</property>
请注意,当我打开执行的具体操作并点击“操作配置”标签时,我看不到此配置。
如何在Oozie下运行的Java程序中访问此特定属性?
答案 0 :(得分:1)
我弄明白我错过了什么。在workflow.xml文件中,我需要包括:
<property>
<name>sample.property.filename</name>
<value>${wf:conf("sample.property.filename")}</value>
</property>