如何根据标志使用带输入路径的 Oozie 动作

How to use Oozie action with input path depending on flag

我有一个 oozie 操作,它具有定义的输入路径。如果此路径不存在,我想将输入设置为某个默认路径。

有没有办法根据条件设置路径?我知道我可以为每个可能的输入复制操作,并有一个条件可以路由到正确的操作。但是,当有很多条件路径时,这是不可扩展的。

您可以有一个决策节点,如下所示。如果找到和未找到输入路径,您可以在其中控制您的操作。如果找到,您可以在操作中使用该路径。如果未找到,则在下一个具有控制权的操作中设置默认输入路径。

<decision name="isFileExists">
         <switch>
            <case to="yourNextAction">
              ${fs:exists(yourInputPath)}
            </case>
            <default to="yourNextActionIfInputNotFound" />
         </switch>
</decision>

Oozie 允许您使用 EL 表达式,其中包括条件运算符 ?:。当指定路径不存在时,这使得实现默认路径变得相当直接:

${fs:exists(specified_path) ? specified_path : default_path}