snappy, gzip 등 compress/decompress 라이브러리들이기 때문에 어느 데이터 파일 포맷에 사용하는지, 그리고 데이터(테이블) 특성에 따라
성능은 달라질 수 있습니다.
snappy, gzip 성능 테스트
https://wikidocs.net/131503
https://www.adaltas.com/en/2021/03/22/performance-comparison-of-file-formats/
(compression_codec 옵션 통해서 테스트지만 table 생성 시 tblproperties에 옵션 넣는 것과 같은 기능 입니다.)
https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_parquet.html#parquet_compression
snappy가 구글에서 만든건데 만들 때 다른 포맷들과의 tradeoff대해 쓴 것입니다.
https://www.gitdetail.com/repositories/google/snappy/533862
구글에서 snappy 소개, 성능 관련 공식 문서입니다.
https://github.com/google/snappy
snappy, gzip 차이(file splittable 유무)
https://stackoverflow.com/questions/35789412/spark-sql-difference-between-gzip-vs-snappy-vs-lzo-compression-formats
http://boristyukin.com/is-snappy-compressed-parquet-file-splittable/
For MapReduce, if you need your compressed data to be splittable, BZip2 and LZO formats can be split. Snappy and GZip blocks are not splittable, but files with Snappy blocks inside a container file format such as SequenceFile or Avro can be split. Snappy is intended to be used with a container format, like SequenceFiles or Avro data files, rather than being used directly on plain text, for example, since the latter is not splittable and cannot be processed in parallel using MapReduce. Splittability is not relevant to HBase data.
avoiding small files 에 관한 문서입니다.
1) https://docs.cloudera.com/best-practices/latest/impala-performance/topics/bp-impala-avoiding-small-files.html
set hive.merge.mapfiles 등 x이하 파일 합치고, 최대 x사이즈 파일 만든다 세부 조정 가능한 옵션들입니다.
2) https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/impala_parquet.html#parquet_compacting
SET NUM_NODES=1 옵션을 통해 데이터 노드당 하나 이상 datafile 만들어서 파일 write 시 분산작업을 최소화 시키는 옵션입니다.