我使用Oozie将一组MapReduce作业串联起来。由于需要大量属性,每个作业的单个存根大约有400行。这些属性中的大多数在作业之间是相同的,并且使用config-default.xml中的配置集。我希望能够缩短每个存根并集中共同属性,因为在创建新工作时必须弄清楚哪些属性很常见是非常不切实际的。
显而易见的解决方案是通过将公共属性放在每个存根中使用job-xml标记调用的job.xml文件中来缩短我的工作流程。但是,job.xml似乎没有读取config-default.xml,因此在job.xml中没有解析变量。我不能在job-xml标记中使用config-default.xml,因为它本身包含在job.properties中设置的变量。
有什么建议吗?运行bash脚本并手动替换变量不是我可以使用的解决方案。
答案 0 :(得分:1)
这样您可以将所有连接属性放在全局部分中,它看起来像这样:
<workflow-app xmlns="uri:oozie:workflow:0.4" name="wf-name">
<global>
<job-tracker>${job-tracker}</job-tracker>
<name-node>${namd-node}</name-node>
<job-xml>job1.xml</job-xml>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
</global>
注意:请确保使用正确的工作流程版本(在我的示例中为0.4)