数据仓库之Hive技术框架选型

本文深入剖析Hive数据仓库的优化策略,聚焦于列存储、Parquet格式、Snappy压缩及SparkSQL执行引擎的选择,旨在提升大数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive 技术框架剖析

1.1 数据存储

① 行存储
基于 Hadoop 系统行存储结构的优点在于快速数据加载和动态负载的高适应能力,但是行存储不支持快速查询,当查询仅仅针对多列表中的少数几列时,它不能跳过不必要的列读取。同时,由于行存储混合着不同数据值的列,行存储不容易获得一个极高的压缩比,即空间利用率不易大幅提高,尽管通过熵编码和利用列相关性能够获得一个较好的压缩比,但是复杂数据存储实现会导致解压开销增大。
② 列存储
列存储在查询时列存储能够避免读不必要的列,并且压缩一个列中的相似数据能够达到较高的压缩比。
③ 存储方式的选择
在数据仓库的搭建中,我们选择列存储方式。
对于列式存储范式,有三种存储格式可以选择:rcfile,Orc,Parquet。
若论对 Hive(以 MapReduce 为执行引擎)的支持 Orc 是最好的,但是若论对 Spark 等 Hadoop 生态圈中更多的技术框架,Parquet 的支持是最好的,而 Spark 作为 Hive 的执行引擎时性能非常好,因以我们这里毫无疑问地选择了 Parquet。

1.2 数据压缩

Hive 中可用的压缩格式如下表所示:

压缩格式工具算法文件拓展名是否可切分
DEFAULTDEFAULT.delate
gzipgzipDEFAULT.gz
bzip2bzip2bzip2.bz2
LZOlzopLZO.lzo
SnappySnappy.nappy

由于我们的存储格选用了 Parquet,在压缩格式方面 Parquet 支持 Snappy 和 Gzip,Gzip
的压缩比更高但解压缩的速度较慢,我们选择 Snappy。

1.3 执行引擎
  • Hive 的执行引擎包括 MapReduce、Spark 和 Tez。
  • 就性能而言,MapReduce 性能最差, Tez 与 spark 接近,但论社区的活跃程度和技术的成熟度来说 Tez 是不如 Spark的,因此我们选择 spark。
  • Spark 目前也有两大分支,即 SparkCore(RDD)和 SparkSQL(DataFrame/DataSet),
    对于这两个分支性能上也有很大差异的。
  • 经过测试,SparkCore 的性能是 MapReduce 的两倍左右,而 SparkSQL 的性能是 SparkCore
    的两倍左右,数据量越大,上述的性能差异会越明显,因此 Hive 数据仓库的执行引擎确定为 SparkSQL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值