복붙노트

[HADOOP] hadoop 스트리밍을 사용하여 파일 압축 풀기

HADOOP

hadoop 스트리밍을 사용하여 파일 압축 풀기

나는 HDFS에 많은 파일을 가지고 있는데, 모두 내부에 하나의 CSV 파일이있는 zip 파일입니다. 스트리밍 작업을 실행할 수 있도록 파일 압축을 풀려고합니다.

나는 시도했다 :

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
    -D mapred.reduce.tasks=0 \
    -mapper /bin/zcat -reducer /bin/cat \
    -input /path/to/files/ \
    -output /path/to/output

그러나 오류가 발생합니다 (하위 프로세스는 코드 1로 실패 함). 나도 같은 오류를 하나의 파일에서 실행 해 보았습니다.

어떤 충고?

해결법

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

    1.문제의 근본 원인은 다음과 같습니다. (데이터를 받기 전에) hadoop에서 많은 (텍스트) 정보를 얻습니다.

    문제의 근본 원인은 다음과 같습니다. (데이터를 받기 전에) hadoop에서 많은 (텍스트) 정보를 얻습니다.

    예 : hdfs dfs -cat hdfs : //hdm1.gphd.local : 8020 / hive / gphd / warehouse / my.db / my / part-m-00000.gz | zcat | wc -l은 "gzip : stdin : gzip 형식이 아님"오류 메시지와 함께 작동하지 않습니다.

    따라서이 "불필요한"정보는 무시해야합니다. 제 경우에는 86 줄을 건너 뛰어야합니다.

    따라서 나의 한 줄 명령은 다음과 같다. hdfs dfs -cat hdfs : //hdm1.gphd.local : 8020 / 하이브 / gphd /웨어 하우스 / my.db / my / part-m-00000.gz | tail -n + 86 | zcat | wc -l

    참고 :이 해결 방법은 (실제 솔루션이 아닌) 매우 못생긴 - 때문에 "86"-하지만 잘 작동합니다 :)

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

    2.어떤 이유로 든 HDFS 내의 파일을 압축 해제 / 압축 해제하는 간단한 방법

    어떤 이유로 든 HDFS 내의 파일을 압축 해제 / 압축 해제하는 간단한 방법

    hadoop fs -text /hdfs-path-to-zipped-file.gz | hadoop fs -put - /hdfs-path-to-unzipped-file.txt
    
  3. ==============================

    3.실험을하다가 hadoop 스트리밍을 수정하면 gzip으로 압축 된 모든 파일을 새로운 디렉토리에 압축 해제합니다. 파일 이름은 모두 잃어 버렸습니다 (전형적인 part-XXXX 이름으로 바뀜). 그러나 이것은 저에게 효과적이었습니다.

    실험을하다가 hadoop 스트리밍을 수정하면 gzip으로 압축 된 모든 파일을 새로운 디렉토리에 압축 해제합니다. 파일 이름은 모두 잃어 버렸습니다 (전형적인 part-XXXX 이름으로 바뀜). 그러나 이것은 저에게 효과적이었습니다.

    hadoop은 자동으로 gzip으로 압축 된 파일을 압축 해제하고 cat은 그냥 압축 해제 된 결과물을 반향시키기 때문에이 파일이 작동한다고 추측합니다.

    hadoop jar /usr/iop/4.2.0.0/hadoop-mapreduce/hadoop-streaming.jar \
        -D mapred.reduce.tasks=0 \
        -mapper /bin/cat \
        -input  /path-to-gzip-files-directory \
        -output /your-gunzipped-directory
    
  4. ==============================

    4.Hadoop은 gzip 형식으로 압축 된 파일을 읽을 수 있지만 zip 형식과 다릅니다. Hadoop은 zip 파일 AFAIK을 읽을 수 없습니다.

    Hadoop은 gzip 형식으로 압축 된 파일을 읽을 수 있지만 zip 형식과 다릅니다. Hadoop은 zip 파일 AFAIK을 읽을 수 없습니다.

  5. from https://stackoverflow.com/questions/15256808/unzip-files-using-hadoop-streaming by cc-by-sa and MIT license