복붙노트

[HADOOP] 하둡 / 하이브에 손상된은 gzip 파일을 처리

HADOOP

하둡 / 하이브에 손상된은 gzip 파일을 처리

나는 텍스트 파일의 큰 숫자를 포함하는 HDFS에 tar.gz의 파일의 많은 매일 폴더가 있습니다. 그 tar.gz의 다수가 손상 해당 파일을 처리 할 때 하이브 / 맵리 듀스 작업은 "스트림의 예상치 못한 말 '과 충돌을 일으킬 것으로 밝혀졌다.

나는 그 중 몇 가지를 확인하고 타르 -zxvf로 테스트. 이런 일이 발생하기 전에 여전히 그들은 실제로 오류로 종료하지만 파일의 알맞은 수를 추출합니다.

타르 / GZ 파일이 손상된 경우 단순히 충돌 하이브 / 맵리 듀스 작업을 중지하는 방법이 있나요? 나는 같은 일부 오류 건너 뛰기 실패 허용 오차 매개 변수를 테스트 한 mapred.skip.attempts.to.start.skipping, mapred.skip.map.max.skip.records, mapred.skip.mode.enabled, mapred.map.max.attempts, mapred.max.map.failures.percent, mapreduce.map.failures.maxpercent.

그것은 충돌없이 처리 완전한 폴더를 얻을 경우 소수에 도움을하지만 대부분이 정지 전혀 완료되지 할 작업을 일으켰습니다.

다만 다음 HDFS에 업로드 (깨끗한 GZIP 파일을 가져 오려면) aftewards을 다시 압축하는 하둡 외부의 모든 단일 파일의 압축을 해제하면 다시 (때문에 추가 단계이 생성 할 데이터의 많은 양의) 이러한 고통스러운 과정이 될 것입니다

누군가가 발견했다는 청소기 / 더 우아한 해결책이 있습니까?

어떤 도움을 주셔서 감사합니다.

해결법

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

    1.여기 파티에 슈퍼 늦었 어, 난 그냥 손상은 gzip 파일이 정확한 문제에 직면했다. 나는하는 IOException을 잡을 문제가 있었다 파일의 이름을 기록하고 우아하게 해당 파일을 삭제하고 다음 단계로 이동합니다 것입니다 내 자신의 RecordReader를 작성하여 그것을 해결 끝났다.

    여기 파티에 슈퍼 늦었 어, 난 그냥 손상은 gzip 파일이 정확한 문제에 직면했다. 나는하는 IOException을 잡을 문제가 있었다 파일의 이름을 기록하고 우아하게 해당 파일을 삭제하고 다음 단계로 이동합니다 것입니다 내 자신의 RecordReader를 작성하여 그것을 해결 끝났다.

    나는 여기에 사용자 정의 레코드 리더를위한 코드를 포함하여 몇 가지 세부 사항을 (최대 작성했습니다 : http://daynebatten.com/2016/03/dealing-with-corrupt-or-blank-files-in-hadoop/

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

    2.나는 기본적으로 두 가지 방법을 참조 :

    나는 기본적으로 두 가지 방법을 참조 :

  3. from https://stackoverflow.com/questions/19523724/handle-corrupted-gzip-files-in-hadoop-hive by cc-by-sa and MIT license