spark & 文件压缩

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

文本文件压缩

bzip2

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

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

snappy

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

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

gzip

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

import org.apache.hadoop.io.compress.GzipCodec
rdd.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四种方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值