我是 Apache Oozie 的新手,据我了解,工作流/协调器作业必须在 xml 文件中预定义。但是,在我的问题中,我需要动态定义工作流程,这取决于我的工作流程中可能有额外操作的输入文件。有没有办法以编程方式做到这一点?
问问题
1538 次
2 回答
2
我完全同意 Mzf 的回答,但想添加一些内容来回答 jamiet 的问题并创建一个更一般的答案。如果将您的工作流拆分为多个流/案例是有意义的,那么决策控制节点就是要走的路。
但是,有时有必要 - 就像评论中提出的 jamiet 一样 - 您想要调用工作流/操作以对集合进行迭代。这意味着每次运行工作流时,工作流的可能长度可能从仅 1 个操作到 100 个不等,具体取决于集合。这不是您可以使用简单的决策控制节点来表示的。我的一个用例是生成一个工作流来为配置文件中存在的每个表/数据库对执行 sqoop 导入。
我对这个问题的解决方案是让 1 个工作流调用可能带有一些参数的自定义脚本。然后,此脚本构建“动态工作流”的 workflow.xml 文件,其中包含与您的集合对应的操作。构建工作流.xml 后,脚本将调用oozie job
指向新创建的工作流.xml 的 job.properties 文件。
于 2017-01-19T10:40:42.700 回答