我试图创建一个oozie协调器,在HDFS路径中添加任何文件时执行工作流程,但我只找到示例触发指定文件的工作流程,我可以在done-flag中使用像regex这样的东西吗?(不工作添加的样本),任何建议??:
<coordinator-app name="coordinator_test" frequency="${frequency}" start="${start}" end="${end}" timezone="${timezone}" xmlns="uri:oozie:coordinator:0.1">
<controls>
<concurrency>1</concurrency>
<execution>FIFO</execution>
<throttle>5</throttle>
</controls>
<datasets>
<dataset name="input1" frequency="2" initial-instance="2015-09-23T00:00Z" timezone="UTC">
<uri-template>${nameNode}/user/oozie/test/created</uri-template>
<done-flag>*</done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="coordInput1" dataset="input1">
<start-instance>${coord:current(-1)}</start-instance>
<end-instance>${coord:current(0)}</end-instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${nameNode}/user/oozie/workflow.xml</app-path>
</workflow>
</action>
</coordinator-app>
答案 0 :(得分:0)
更新:
对于不同类型的文件,我将使用不同的uri-template指定不同的数据集,并在那里指定各种文件名/类型。它们可以指向相同的位置,文件名(使用wildchars)将指定不同类型的源。
像: $ {} HDFS /学生*
$ {} HDFS /教师*
使用决策控制节点以正确的脚本处理数据。
尝试
<done-flag></done-flag>
而不是路径存在时的触发器。
done-flag:数据集的完成文件。如果done-flag不是 指定,然后Oozie配置Hadoop创建一个_SUCCESS文件 输出目录。如果done标志设置为空,则 协调员查找目录本身的存在。