如何在Oozie工作流程中使文件可选?

时间:2017-07-25 15:45:36

标签: hadoop oozie oozie-workflow

假设我有一个工作流操作,我需要获取并使用hdfs中的文件(如果存在但不会失败)。有没有办法在工作流程配置中执行此操作?

所以,如果我有这样的事情:

<action name="run">
    <java>
        <main-class>AJavaProgram</main-class>
        ...
        <arg>-files</arg>
        <arg>properties.json</arg>
        ...
        <file>${concat(additionsPath, "properties.json")}</file>
        ...
    </java>
</action>

只要该属性文件存在于正确位置的hdfs中,它就可以正常工作,但如果它没有,则工作流失败。如果文件没有从HDFS复制,有没有办法让它不失败?从workflow.xml创建文件可选的方法吗?

2 个答案:

答案 0 :(得分:1)

每个动作都有两个选项

<ok to="myShelljob"/>
<error to="myShelljob"/>

在错误部分提到了下一个Shell操作名称,而不是失败。它将继续下一个shell动作。 在shell操作中,您可以检查文件是否存在。如果文件不存在,继续下一步操作,如果发生任何其他错误,则操作将失败。

答案 1 :(得分:0)

当操作处于 ERROR或FAILED状态时,Oozie提供用户重试功能。

您可以在操作定义中指定 retry-max retry-interval 。因此,当文件不在目录中时,它会被重试而不是失败。

工作流操作中用户重试的示例是:

  <workflow-app xmlns="uri:oozie:workflow:0.3" name="wf-name">
  <action name="a" retry-max="2" retry-interval="1">
  </action>

参考:Asynchronous computation in TensorFlow