복붙노트

[HADOOP] 파일 코디네이터 oozie 설정에 존재하지 않는 경우 오류를 해결하는 방법

HADOOP

파일 코디네이터 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에 저장할 수 있습니다. 어떤 생각 .. ??

감사.

해결법

  1. ==============================

    1.이 작업을 수행하는 ususal 방법은 적절한 데이터 의존성을 가지고있다. 하여 입력 데이터를 생성하는 과정은 데이터가 존재하는 것을 signales 파일 (예컨대 _SUCCESS)를 생성한다. 당신이 당신의 입력 데이터 세트 (예를 들어, _SUCCESS)에 정의하면, Oozie는 주기적으로이 파일의 실존을 확인하고이 가능한 경우에만 워크 플로를 시작.

    이 작업을 수행하는 ususal 방법은 적절한 데이터 의존성을 가지고있다. 하여 입력 데이터를 생성하는 과정은 데이터가 존재하는 것을 signales 파일 (예컨대 _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에 연결하는 것입니다.

    당신은 또한 당신이 그 위에상의가 오프셋 한 후 지정된 시간대 = 아시아 / 자카르타를 넣었습니다 보인다 초기 인스턴스 값을 다시 확인해야합니다.

  2. from https://stackoverflow.com/questions/34310152/how-to-solve-the-error-when-file-doesnt-exist-in-setting-coordinator-oozie by cc-by-sa and MIT license