복붙노트

[HADOOP] Snappy splittable 또는 splittable입니까?

HADOOP

Snappy splittable 또는 splittable입니까?

이 Cloudera 지에 따르면, Snappy는 분할 가능합니다.

그러나 hadoop 최종 가이드에서, Snappy는 분할 할 수 없습니다.

또한 웹에 약간의 정보가 있습니다. 어떤 사람들은 분열 될 수 있다고 말하고, 어떤 분은 그렇지 않다고 말한다.

해결법

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

    1.둘 다 정확하지만 수준이 다릅니다.

    둘 다 정확하지만 수준이 다릅니다.

    Cloudera 블로그 http://blog.cloudera.com/blog/2011/09/snappy-and-hadoop/에 따르면

    즉, 전체 텍스트 파일을 Snappy로 압축하면 파일을 분할 할 수 없습니다. 그러나 파일 안의 각 레코드가 Snappy로 압축 된 경우 파일을 분할 할 수 있습니다 (예 : 블록 압축을 사용하는 시퀀스 파일).

    더 명확히하기 위해 동일하지 않습니다.

    <START-FILE>
      <START-SNAPPY-BLOCK>
         FULL CONTENT
      <END-SNAPPY-BLOCK>
    <END-FILE>
    

    보다

    <START-FILE>
      <START-SNAPPY-BLOCK1>
         RECORD1
      <END-SNAPPY-BLOCK1>
      <START-SNAPPY-BLOCK2>
         RECORD2
      <END-SNAPPY-BLOCK2>
      <START-SNAPPY-BLOCK3>
         RECORD3
      <END-SNAPPY-BLOCK3>
    <END-FILE>
    

    작은 블록은 분할 할 수 없지만 작은 블록이있는 파일은 분할 테이블입니다.

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

    2.hadoop의 모든 splittable 코덱은 org.apache.hadoop.io.compress.SplittableCompressionCodec을 구현해야합니다. hadoop 소스 코드를 2.7로 살펴보면, org.apache.hadoop.io.compress.SnappyCodec이이 인터페이스를 구현하지 않는다는 것을 알 수 있으므로 splittable이 아니라는 것을 알 수있다.

    hadoop의 모든 splittable 코덱은 org.apache.hadoop.io.compress.SplittableCompressionCodec을 구현해야합니다. hadoop 소스 코드를 2.7로 살펴보면, org.apache.hadoop.io.compress.SnappyCodec이이 인터페이스를 구현하지 않는다는 것을 알 수 있으므로 splittable이 아니라는 것을 알 수있다.

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

    3.나는 JSFS 파일과 압축 된 파일 사이에서 같은 수의 작업자 / 프로세서에 대해 HDFS에서 Spark 1.6.2를 테스트했습니다.

    나는 JSFS 파일과 압축 된 파일 사이에서 같은 수의 작업자 / 프로세서에 대해 HDFS에서 Spark 1.6.2를 테스트했습니다.

    멋진 파일은 다음과 같이 생성됩니다. .saveAsTextFile ( "/ user / qwant / benchmark_file_format / json_snappy", classOf [org.apache.hadoop.io.compress.SnappyCodec])

    따라서 Snappy는 JSON 용 Spark과 분할 할 수 없습니다.

    그러나 JSON 대신에 parquet (또는 ORC) 파일 형식을 사용하면이 파일은 분할 가능합니다 (gzip을 사용하더라도).

  4. from https://stackoverflow.com/questions/32382352/is-snappy-splittable-or-not-splittable by cc-by-sa and MIT license