Hive不同存储格式下的压缩算法对比

Hive不同存储格式下的压缩算法对比

压缩算法

Text格式

Parquet格式

ORC格式

不压缩

119.2G

54.1G

20.0G

Snappy压缩

30.2 G

23.6G

13.6G

Gzip压缩

18.8 G

14.1 G

不支持

ZLIB压缩

不支持

不支持

10.1G

 


Spark查询Hive(Orc格式)时遇到的问题

1、Orc的压缩格式设置方法为:orc.compress=SNAPPY,默认为ZLIB(一定要大写;推荐使用ZLIB,和SNAPPY比压缩提升不少,查询差距不大,资源消耗也差距不大)

2、直接全量count时,Hive效率高于Spark(Hive不提交任务到集群,直接通过file footer获每个文件的count值)

3、可以开启事物实现ACID

4、网上SparkSQL的在ORC上的调优参数,经测试效果不明显

##-- orc
set spark.sql.orc.filterPushdown=true; -- 谓词下推,外部的条件下推到内部,减少检索
set spark.sql.orc.splits.include.file.footer=true; -- V2.3之后 优先从file footer中获取聚合值
set spark.sql.orc.cache.stripe.details.size=10000;
spark.sql.hive.metastorePartitionPruning true
set hive.exec.orc.split.strategy=ETL -- ETL:会切分文件,多个stripe组成一个split,BI:按文件进行切分,HYBRID:平均文件大小大于hadoop最大split值使用ETL,否则BI
set spark.hadoop.mapreduce.input.fileinputformat.split.maxsize=134217728; -- 128M 读ORC时,设置一个split的最大值,超出后会进行文件切分
set spark.hadoop.mapreduce.input.fileinputformat.split.minsize=67108864; -- 64M 读ORC时,设置小文件合并的阈值

 

 参考文件:

1、https://www.jianshu.com/p/5252b346995e

2、https://www.iteblog.com/archives/1014.html

3、https://juejin.im/post/5c10a380f265da61477012cc

你可能感兴趣的:(hive,spark)