【问题标题】:pass parameter from coordinator.xml to workflow.xml oozie将参数从 coordinator.xml 传递到 workflow.xml oozie
【发布时间】:2014-07-15 19:29:25
【问题描述】:

我有一个要求,我需要将日期从协调员带到 oozie 中的工作流。

为此,我开发了示例协调器和工作流程,如下所示。但是,在启动协调器作业后,所有工作流作业都失败并出现错误代码 E0701。表示 xml 解析错误。我几乎没有尝试过,我做错了什么?我找不到问题?请帮忙。

workflow.xml

<workflow-app name="test_wf" xmlns="uri:oozie:workflow:0.4">
    <start to="samp_pig"/>
    <action name="samp_pig">
        <fs>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <delete path='${nameNode}/tmp/${wf.conf("DATE")}'/>
        </fs>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error      message[${wf:errorMessage(wf:lastErrorNode())}]    
</message>
    </kill>
    <end name="end"/>
</workflow-app>

coordinator.xml

<coordinator-app name="test"
  frequency="5"
  start="2014-07-15T11:35Z" end="2014-07-17T12:15Z" timezone="America/Los_Angeles"
  xmlns="uri:oozie:coordinator:0.2">
  <action>
    <workflow>
      <app-path>${wf_application_path}</app-path>
      <configuration> 
    <property>
        <name>DATE</name>
        <value>${coord:formatTime(coord:nominalTime(), 'yyyy-MM-dd')}</value>
    </property>
      </configuration>
   </workflow>
  </action>

job.properties

jobTracker=localhost.localdomain:8021
nameNode=hdfs://localhost.localdomain:8020
oozie.coord.application.path=/tmp/uc1/
oozie.use.system.libpath=true
wf_application_path=/tmp/uc1/wf1/

使用命令

hadoop fs -rmr /tmp/uc1/
hadoop fs -mkdir /tmp/uc1/wf1/
hadoop fs -put * /tmp/uc1/wf1/
hadoop fs -put * /tmp/uc1/
oozie job -oozie  http://localhost.localdomain:11000/oozie -config job.properties -submit

【问题讨论】:

    标签: hadoop oozie oozie-coordinator


    【解决方案1】:

    要获取 coordinator.xml 中 DATE 属性的值,只需使用 ${DATE}

        <fs>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <delete path='${nameNode}/tmp/${DATE}'/>
        </fs>
    

    【讨论】:

    • 坦克寻求帮助。我按照上面说的做了。仍然面临同样的问题。
    【解决方案2】:

    额外观察 - 即使您尝试使用 WF EL 函数 - 正确的方法是 wf: 而不是 wf.

    【讨论】:

      【解决方案3】:

      我发现了我的错误。我们不应该使用

      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>
      

      在“fs”动作中。 保持一切原样。甚至协调员工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 2013-11-23
        • 1970-01-01
        • 2017-08-28
        • 2014-03-03
        • 2020-07-11
        • 2012-12-02
        相关资源
        最近更新 更多