如何解决设置协调器oozie中不存在文件时的错误



如何解决设置协调器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

最新更新