我第一次使用Oozie
并且发现它有点难以解析规范。我正在尝试创建一个简单的工作流程,在其中我在Hive
中运行一些查询,然后执行shell
操作以便使用不同的程序进行一些分析,然后最后我想通过Java
执行Oozie
职位。
虽然我了解如何单独执行所有这些操作,但是如何设置我的工作流以便最终Java
作业在启动之前等待生成文件?谷歌搜索,我看到让Oozie
工作流等待数据集在启动之前生成的方法,但我不希望整个工作流等待,因为我只希望工作流中的一个特定操作等待用于生成输入文件。
输入文件将是简单的 - 我很可能只有第二个动作,shell
,在它退出之前执行一些命令,如touch $(date -u "+%Y-%m-%d-%H").done
,这样我的输入文件就会是一个零字节文件,名称为2015-07-20-14.done
。
答案 0 :(得分:2)
创建一个cordinator,它将在给定的持续时间内在指定的hdfs位置查找数据集。
样本协调员
<coordinator-app name="FILE_CHECK" frequency="1440" start="2009-02-01T00:00Z" end="2009-02-07T00:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="datafile" frequency="60" initial-instance="2009-01-01T00:00Z" timezone="UTC">
<uri-template>hdfs://<URI>:<PORT>/data/feed/${YEAR}/${MONTH}/${DAY}/${HOUR}</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="coorddatafile" dataset="datafile">
<start-instance>${coord:current(-23)}</start-instance>
<end-instance>${coord:current(0)}</end-instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>hdfs://<URI>:<PORT>/workflows</app-path>
</workflow>
</action>
</coordinator-app>
答案 1 :(得分:0)
您可以在此处使用decision node概念。
检查文件,一个switch case以确定一旦你让文件执行你的下一个java动作。
---- EDIT ------
在下面找一个例子,这并不能解决你的问题:
Min()
同样明智的是,你可以在开关盒中添加你的动作节点并继续相应的。