本文主要是介绍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不同存储格式下的压缩算法对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!