oozie>协调员>如何使用外部事件触发操作

时间:2016-01-04 19:17:28

标签: oozie oozie-coordinator

在Oozie网站上,它被告知“通常,工作流程作业是根据常规时间间隔和/或数据可用性运行的。而且,在某些情况下,它们可以由外部事件触发。” 任何人都知道如何使用外部事件触发操作?

1 个答案:

答案 0 :(得分:0)

外部事件可以是某些目录中文件的可用性。 因此oozie协调员拥有此功能。当您需要在完成第一个相关工作流程时触发第二个工作流程时,这非常有用。 第二个cordinator继续轮询success_trigger.txt的可用性 triggerdirpath

triggerdirpath是hdfs路径,其中success_trigger.txt由第一个工作流程创建

<coordinator-app name="Xxx" frequency="${coord:days(1)}" start="${startTime2}" end="${endTime}" timezone="GMT-0700" xmlns="uri:oozie:coordinator:0.2">


        <dataset name="check_for_SUCCESS" frequency="${coord:days(1)}" initial-instance="${startTime2}" timezone="GMT-0700">
                <uri-template>${triggerdirpath}</uri-template>
                <done-flag>success_trigger.txt</done-flag>
            </dataset>
    </datasets>

    <input-events>
        <data-in name="check_for_SUCCESS_data" dataset="check_for_SUCCESS">
        <instance>${startTime2}</instance>
        </data-in>
      </input-events>


    <action>
        <workflow>
            <app-path>${WF_path}</app-path>
            <configuration>
                <property><name>WaitForThisInputData</name><value>${coord:dataIn('check_for_SUCCESS_data')}</value></property>
                <property><name>WhenToStart</name><value>${startTime2}</value></property>
                <property><name>rundate</name><value>${coord:dataOut('currentFullDate')}</value></property>
                <property><name>previousdate</name><value>${coord:dataOut('previousFullDate')}</value></property>
                <property><name>currentyear</name><value>${coord:dataOut('currentYear')}</value></property>
                <property><name>currentmonth</name><value>${coord:dataOut('currentMonth')}</value></property>
                <property><name>currentday</name><value>${coord:dataOut('currentDay')}</value></property>
                <property><name>previousbatchtime</name><value>${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'DAY'),"yyyy-MM-dd")}</value></property>
                <property><name>currentbatchtime</name><value>${coord:formatTime(coord:dateOffset(coord:nominalTime(),0,'DAY'),"yyyy-MM-dd")}</value></property>
                <property><name>nextbatchtime</name><value>${coord:formatTime(coord:dateOffset(coord:nominalTime(),1,'DAY'),"yyyy-MM-dd")}</value></property>
            </configuration>
        </workflow>
    </action>
</coordinator-app>