如何在Apache Oozie中动态定义工作流程?

时间:2015-04-15 20:41:35

标签: hadoop oozie oozie-coordinator

我是Apache Oozie的新手,据我所知,必须在xml文件中预定义工作流/协调员作业。但是,在我的问题中,我需要动态定义工作流,这取决于输入文件,我可能在我的工作流程中有额外的操作。有没有办法以编程方式执行此操作?

2 个答案:

答案 0 :(得分:1)

我完全同意Mzf的回应,但是想要添加一些东西来回答jamiet的问题,并创建一个更一般的答案。 如果将工作流分成多个流/案例是有意义的话,那么就可以使用决策控制节点了。

有时候有必要 - 就像jamiet在评论中提到的那样 - 你想要调用一个工作流/动作来迭代一个集合。这意味着每次运行工作流时,工作流的可能长度可以从1个操作到100个不等,具体取决于集合。这不是您可以使用简单的决策控制节点表示的内容。我的一个用例是生成一个工作流,为配置文件中的每个表/数据库对执行sqoop导入。

我对此问题的解决方案是让1个工作流程调用自定义脚本,可能包含一些参数。然后,此脚本构建“动态工作流”的workflow.xml文件,其中包含与您的集合对应的操作。构建了workflow.xml之后,脚本使用指向新创建的workflow.xml的job.properties文件调用oozie job

答案 1 :(得分:0)

工作流程&协调员是预定义的文件 - 这并不意味着您无法控制工作流程操作。

如果工作流程中有多个案例/流程,您可以添加Decision Control Node来控制工作流程中的流程。

例如,假设您说如果我有输入A它将执行ActionA_1,ActionA_2并且对于输入案例B将执行ActionB_1,ActionB_2,使用Decision Control Node选择执行路径以跟随