hive 常见存储格式和应用场景

1.存储格式

textfile、sequencefile、orc、parquet

sequencefile很少使用(不介绍了),常见的主要就是orc 和

parquet

bash 复制代码
建表声明语句是:stored as textfile/orc/parquet

行存储:同一条数据的不同字段都在相邻位置,所以当要查找某一条记录所有数据时行存储查询速度比较快

列存储:以列来聚集数据,相同字段的值聚集在一起,所以当查询某一个指定列的所有数据时,列存储查询速度比较快

  1. Textfile

行式存储,这是hive表的默认存储格式,默认不做数据压缩,方便查看和编辑,占用空间大,I/O性能低,磁盘开销大,数据解析开销大,数据不支持分片(即代表着会带来无法对数据进行并行操作)。

  1. Orc

行列式存储,将数据按行分块,每个块按列存储,其中每个块都存储着一个索引,支持none和zlib和snappy这3种压缩方式,默认采用zlib压缩方式,不支持切片,orc存储格式能提高hive表的读取写入和处理的性能。

  1. Parquet

列式存储,是一个面向列的二进制文件格式(不可直接读取),文件中包含数据和元数据,所以该存储格式是自解析的,在大型查询时效率很快高效,parquet主要用在存储多层嵌套式数据上提供良好的性能支持,默认采用uncompressed不压缩方式。

2.压缩方式

gzip、zlib、snappy、lzo 这四种压缩方式。 压缩不会改变元数据的分割性,即压缩后原来的值不变。

bash 复制代码
建表声明语句是:tblproperties("orc.compress"="SNAPPY")

压缩率的话:gzip压缩率最佳,但压缩解压缩速度较慢

压缩速度的话:snappy压缩解压缩速度最佳,但压缩率较低

是否可切片的话:gzip/snappy/zlib是不支持切片,而lzo支持切片

3.应用场景

选压缩方式

1.数据量极其大且不经常用来做计算的数据,可采用GZip,因为其压缩占比最高,但压缩解压缩速度最慢。

2.数据量不大且经常需要用来计算的数据,可采用Snappy或者Lzo,常常还用来搭配orc和parquet存储格式实现大幅度的数据压缩存储。

选存储格式

1.hive生产环境下时常是采用orc或者parquet 这2种存储格式,但最好是做好统一,别一个数仓里的表存储格式百花齐放我建议就是数仓各层统一采用orc存储格式,拥有一定的压缩率且压缩解压缩速度也适中

2.orc存储格式+zlib压缩方式适合用作数仓ODS层表设计 ,因为这层一般是业务贴源层来入库数据和备份,查询频率打不大,而orc存储格式+snappy压缩方式适合用作数仓DW层表设计 ,这公共层表一般查询较频繁,所以要考虑下查询时解压缩速度

3.一般数据量预测会很大的话才不选用orc存储格式 ,主要是为了避免map端数据倾斜 ,因为orc+snappy不支持分割文件操作,所以压缩文件只会被一个任务读取,压缩文件很大的话就会造成mapper处理该文件极其耗时,这就是所谓的map读取文件出现数据倾斜

相关推荐
Gain_chance10 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
Gain_chance11 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
Gain_chance12 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
无级程序员21 小时前
大数据Hive之拉链表增量取数合并设计(主表加历史表合并成拉链表)
大数据·hive·hadoop
华农DrLai1 天前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
心疼你的一切1 天前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
qq_12498707531 天前
基于Hadoop的信贷风险评估的数据可视化分析与预测系统的设计与实现(源码+论文+部署+安装)
大数据·人工智能·hadoop·分布式·信息可视化·毕业设计·计算机毕业设计
十月南城2 天前
Hive与离线数仓方法论——分层建模、分区与桶的取舍与查询代价
数据仓库·hive·hadoop
鹏说大数据2 天前
Spark 和 Hive 的关系与区别
大数据·hive·spark
B站计算机毕业设计超人2 天前
计算机毕业设计Hadoop+Spark+Hive招聘推荐系统 招聘大数据分析 大数据毕业设计(源码+文档+PPT+ 讲解)
大数据·hive·hadoop·python·spark·毕业设计·课程设计