oozie - 我可以使用 oozie 动作作为我多次调用的模板吗?
问题描述
我有一个 shell oozie 动作,它接受许多传递给 shell 脚本的参数。我想每次使用不同的参数多次触发该动作。一个示例 dag 看起来像:
Start
/ | \
f(a) f(d) f(g)
| | |
V V V
f(b) f(e) f(h)
| | |
V V V
f(c) f(f) f(i)
\ | /
End
是否有可能在没有大量重复操作的情况下实现这一目标?
解决方案
是的,可以Oozie sub-workflow
选择。
将 Shell 操作组合为子工作流,并使用不同的输入值从主工作流的多个位置调用子工作流。
<action name="call_sub_workflow_1">
<sub-workflow>
<app-path>${workflowAppUri}/sub_workflow_with_shell_action/</app-path>
<propagate-configuration/>
<configuration>
<property>
<name>argument_1</name>
<value>${wf:actionData('previous_action')['val1']}</value>
</property>
<property>
<name>argument_2</name>
<value>${val2}</value>
</property>
</configuration>
</sub-workflow>
<ok to="End"/>
<error to="Fail"/>
</action>
具有子工作流目录结构的主工作流看起来像,
main_workflow_dir
|
|--job.properties
|
|--workflow.xml # main workflow, can call sub workflow from multiple places
|
|--sub_workflow_with_shell_action
|
|--shell script
|
|--workflow.xml # sub workflow contains the shell script action and takes arguments
推荐阅读
- android - 如何使用来自 firebase 的值填充 listView
- angular - Angular,REST-API Json 对象,使用子对象访问特定数组
- android - lineSpacingExtra 不适用于 TextView
- javafx - 微调器中的 NumberFormatException
- django - 清除()后未删除 M2M 关系
- python-requests - 将 verify=False 传递给 post 时出现 ValueError 异常
- mysql - 如何将查询中的常量值列添加到另一个查询结果中?
- javascript - 从本地存储中获取星级和数据
- python - Python程序在运行时无法识别全局变量
- amazon-cloudwatch - 如何在 AWS Cloud Watch Logs Insights 中运行分组