복붙노트

[HADOOP] hadoop의 mapreduce.fileoutputcommitter.marksuccessfuljobs를 oozie보다 우선합니다.

HADOOP

hadoop의 mapreduce.fileoutputcommitter.marksuccessfuljobs를 oozie보다 우선합니다.

<property>
<name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
<value>false</value>
</property>

위의 속성을 true로 대체하려고합니다. 클러스터의 나머지 작업에서는이 속성을 false로 설정해야하지만, 작업이 완료되면 출력 디렉토리에 _SUCCESS 파일을 생성하기 위해 hadoop이 필요합니다. 출력을 쓰는 작업 흐름에서의 하이브 작업. 도와주세요.

해결법

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

    1.하이브는 불행히도 자신의 NullOutputComitter를 설정하여이 기능을 재정의합니다.

    하이브는 불행히도 자신의 NullOutputComitter를 설정하여이 기능을 재정의합니다.

    conf.setOutputCommitter(NullOutputCommitter.class);
    

    만나다

    src/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
    src/shims/src/common-secure/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java
    

    플래그를 수동으로 만들어야하는 것 같습니다. 우리는 이것을 위해 HIVE-3700을 제출했습니다.

  2. ==============================

    2.하이브 스크립트에 'dfs'명령을 추가 할 수 있습니다.

    하이브 스크립트에 'dfs'명령을 추가 할 수 있습니다.

    dfs -touchz '$ table_base_path'/ dt = '$ {파티션}'/ _ SUCCESS

    https://archive.cloudera.com/cdh4/cdh/4/hive/language_manual/cli.html

  3. ==============================

    3.나는 같은 문제를 만났고 깃발을 만들기 위해 쉘 액션을 사용했다.

    나는 같은 문제를 만났고 깃발을 만들기 위해 쉘 액션을 사용했다.

    전체 예제는 다음과 같습니다. http://nathan.vertile.com/blog/2014/09/02/oozie-data-pipeline-done-flag/

  4. from https://stackoverflow.com/questions/13017433/override-hadoops-mapreduce-fileoutputcommitter-marksuccessfuljobs-in-oozie by cc-by-sa and MIT license