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

1.存储格式

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

建表声明语句是: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 这四种压缩方式。 压缩不会改变元数据的分割性,即压缩后原来的值不变。

建表声明语句是: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读取文件出现数据倾斜

相关推荐

  1. hive 常见存储格式应用场景

    2023-12-15 22:18:02       38 阅读
  2. Hive存储格式压缩算法的特点选择

    2023-12-15 22:18:02       8 阅读
  3. 常见哈希算法及其应用场景

    2023-12-15 22:18:02       24 阅读
  4. 常见的分类算法及其应用场景

    2023-12-15 22:18:02       16 阅读
  5. 深入挖掘AI应用场景存储架构

    2023-12-15 22:18:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 22:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 22:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 22:18:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 22:18:02       20 阅读

热门阅读

  1. 树莓派部署Home Assistant教程

    2023-12-15 22:18:02       35 阅读
  2. 【.NET Core】Linq查询运算符(三)

    2023-12-15 22:18:02       26 阅读
  3. 矩阵理论及其应用邱启荣习题3.5题解

    2023-12-15 22:18:02       32 阅读
  4. Worker-Thread设计模式

    2023-12-15 22:18:02       44 阅读
  5. urllib.request --- 用于打开 URL 的可扩展库

    2023-12-15 22:18:02       36 阅读
  6. antd TreeSelect 组件如何获取父级ID

    2023-12-15 22:18:02       34 阅读
  7. jvm调优参数常用命令总结

    2023-12-15 22:18:02       42 阅读
  8. 安装dhg

    安装dhg

    2023-12-15 22:18:02      46 阅读
  9. 报表自定义导出文件名

    2023-12-15 22:18:02       45 阅读