spark & 文件压缩

来源:互联网 发布:里士满大学 知乎 编辑:程序博客网 时间:2024/05/16 05:39

hdfs中存储的文件一般都是多副本存储,对文件进行压缩,不仅可以节约大量空间,适当的存储格式还能对读取性能有非常大的提升。

文本文件压缩

bzip2

压缩率最高,压缩解压速度较慢,支持split。

import org.apache.hadoop.io.compress.BZip2Codecrdd.saveAsTextFile("codec/bzip2",classOf[BZip2Codec])

snappy

json文本压缩率 38.2%,压缩和解压缩时间短。

import org.apache.hadoop.io.compress.SnappyCodecrdd.saveAsTextFile("codec/snappy",classOf[SnappyCodec])

gzip

压缩率高,压缩和解压速度较快,不支持split,如果不对文件大小进行控制,下次分析可能可能会造成效率低下的问题。
json文本压缩率23.5%,适合使用率低,长期存储的文件。

import org.apache.hadoop.io.compress.GzipCodecrdd.saveAsTextFile("codec/gzip",classOf[GzipCodec])

parquet文件压缩

parquet为文件提供了列式存储,查询时只会取出需要的字段和分区,对IO性能的提升非常大,同时占用空间较小,即使是parquet的uncompressed存储方式也比普通的文本要小的多。

spark中通过sqlContext.write.parquet("path")
对parquet文件进行存储,默认使用的gzip压缩方式。

可以通过spark.sql.parquet.compression.codec参数或是在代码中进行修改。

parquet存储提供了lzo,gzip,snappy,uncompressed四种方式。

0 0
原创粉丝点击