如何解决设置协调器oozie:中不存在错误文件的问题
我在日志坐标中有错误:
清管器日志文件转储:
后端错误消息
错误:java.io.FileNotFoundException:文件不存在:/user/hdfs/jay/part-0.tmp
设置协调员:
<coordinator-app name="tes-ng" frequency="${coord:minutes(15)}"
start="2015-12-07T10:30+0700" end="2017-02-28T23:00+0700" timezone="Asia/Jakarta"
xmlns="uri:oozie:coordinator:0.1" xmlns:sla="uri:oozie:sla:0.1">
<controls>
<execution>LAST_ONLY</execution>
</controls>
<datasets>
<dataset name="INPUT_DS" frequency="${coord:minutes(15)}"
initial-instance="2015-02-16T016:00+0700" timezone="Asia/Jakarta">
<uri-template>${nameNode}/user/hdfs/jay/${YEAR}/${MONTH}/${DAY}/${HOUR}${MINUTE}
</uri-template>
<done-flag></done-flag>
</dataset>
<dataset name="OUTPUT_DS" frequency="${coord:minutes(15)}"
initial-instance="2015-02-16T16:00+0700" timezone="Asia/Jakarta">
<uri-template>${nameNode}/user/hdfs/jay/output</uri-template>
<done-flag></done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="INPUT" dataset="INPUT_DS">
<instance>${coord:current(-2)}</instance>
</data-in>
</input-events>
<output-events>
<data-out name="OUTPUT" dataset="OUTPUT_DS">
<instance>${coord:current(-2)}</instance>
</data-out>
</output-events>
<action>
<workflow>
<app-path>${appFolder}</app-path>
<configuration>
<property>
<name>INPUT</name>
<value>${coord:dataIn('INPUT')}</value>
</property>
<property>
<name>OUTPUT</name>
<value>${coord:dataOut('OUTPUT')}</value>
</property>
</configuration>
</workflow>
</action>
我想要的是当我收到错误文件不存在时,oozie可以保持直到文件全部准备好。知道吗。。??
谢谢。
实现这一点的常用方法是具有适当的数据依赖关系。创建输入数据的过程会创建一个文件,表示数据存在(例如_SUCCESS)。如果您在输入数据集中定义了(例如_SUCCESS),Oozie将定期检查该文件的存在性,并仅在可用时启动工作流。
<dataset name="INPUT_DS" frequency="${coord:minutes(15)}"
initial-instance="2015-02-16T016:00+0700" timezone="Asia/Jakarta">
<uri-template>${nameNode}/user/hdfs/jay/${YEAR}/${MONTH}/${DAY}/${HOUR}${MINUTE}
</uri-template>
<done-flag>_SUCCESS</done-flag>
</dataset>
如果你不能有这样的标志,那么AFAIK唯一的选择就是编写你自己的输入数据检查并将其插入Oozie(我见过有人为Hive分区这样做)。
您还应该仔细检查初始实例值,因为您似乎已经在其中放置了一个偏移量,然后在其顶部指定了timezone=Asia/Jakarta
。