一文搞懂Hive存储格式及压缩格式,太清晰了!
创作时间:
作者:
@小白创作中心
一文搞懂Hive存储格式及压缩格式,太清晰了!
引用
1
来源
1.
https://blog.baispace.cn/article/hive-knowledge-storage-format.html
在大数据处理领域,Hive作为Hadoop生态系统中的重要组件,其存储格式和压缩格式的选择对性能优化至关重要。本文将深入探讨Hive支持的各种存储格式及其压缩方式,通过对比分析帮助读者理解不同场景下的最佳实践,并结合实际案例进行详细讲解。
Hive 存储格式有哪些?
Hive支持多种文件存储格式,主要包括:
- TEXTFILE:默认的行式存储格式,数据不压缩,磁盘开销大,解析开销大,不支持数据分片。
- SEQUENCEFILE:二进制序列化文件,支持行式存储,压缩选项包括NONE、RECORD、BLOCK,其中BLOCK压缩性能最佳。
- RCFILE:行列存储相结合的格式,已被ORCFILE替代。
- ORCFILE:Hive特有的行列存储格式,支持ZLIB和SNAPPY压缩,具有较好的压缩比和查询性能。
- Parquet:面向分析型业务的列式存储格式,支持Snappy和Gzip压缩,默认使用Snappy。
行式存储和列式存储
上图中左边为行存储,右边为列存储:
- 行存储适合查询整行数据,列存储适合查询特定列数据。
- 列存储在数据压缩方面更具优势,占用空间相对较小。
存储格式使用建议
- TEXTFILE:适用于数据贴源层(ODS或STG层),需要使用脚本加载数据的场景。
- Parquet:适用于Impala和Hive共享数据的场景,支持多种语言和组件。
- ORC:推荐用于大多数场景,但以下情况除外:
- 文本文件加载到ORC格式的Hive表,会消耗较高CPU资源。
- Hive表作为计算结果数据,导出给外部系统读取,因为ORC格式的易读性较低。
Hive压缩格式有哪些?
常见的压缩格式包括Gzip、Bzip2、LZO、Snappy等,它们在压缩比、压缩速度和解压缩速度方面各有优劣:
压缩方式 | 压缩比 | 压缩速度 | 解压缩速度 | 是否可分割 |
---|---|---|---|---|
gzip | 13.4% | 21 MB/s | 118 MB/s | 否 |
bzip2 | 13.2% | 2.4MB/s | 9.5MB/s | 是 |
lzo | 20.5% | 135 MB/s | 410 MB/s | 是 |
snappy | 22.2% | 172 MB/s | 409 MB/s | 否 |
压缩格式评价标准
- 压缩比:越高越好
- 压缩时间:越快越好
- 可分割性:支持分割的格式可以更好地并行处理
Hive数据存储格式及压缩格式使用案例
ORC 使用案例
-- SQL 建表语句
CREATE TABLE temperature_orc(
id string,
year string,
temperature int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC
TBLPROPERTIES ("orc.compress"="NONE");
-- 加载数据
INSERT OVERWRITE TABLE temperature_orc
SELECT id, year, temperature FROM temperature;
ORC+Snappy 使用案例
-- SQL 建表语句
CREATE TABLE temperature_orc_snappy(
id string,
year string,
temperature int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC
TBLPROPERTIES ("orc.compress"="SNAPPY");
-- 加载数据
INSERT OVERWRITE TABLE temperature_orc_snappy
SELECT id, year, temperature FROM temperature;
-- 查看结果
SELECT * FROM temperature_orc_snappy;
Parquet+Snappy 使用案例
-- SQL 建表语句
CREATE TABLE temperature_parquet_snappy(
id string,
year string,
temperature int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS PARQUET
TBLPROPERTIES("parquet.compression"="SNAPPY");
-- 配置压缩的另外一种方式:命令行执行
set parquet.compression=snappy;
-- 加载数据
INSERT OVERWRITE TABLE temperature_parquet_snappy
SELECT id, year, temperature FROM temperature;
-- 查看结果
SELECT * FROM temperature_parquet_snappy;
实际工作中对于Hive存储格式和压缩方式的使用总结
在实际应用中,选择存储格式和压缩方式需要综合考虑以下因素:
- 数据倾斜问题:Snappy等不支持文件分割的压缩格式可能导致数据倾斜,特别是在处理大文件时。
- 性能优化:在Hive on Spark等分布式架构中,支持文件分割的压缩格式可以提高并行处理效率。
- 场景适配:数据源表适合使用TEXTFILE以节省磁盘空间,大数据量场景推荐使用Parquet+LZO,小数据量场景可选择ORC+Snappy。
总结:在实际项目开发中,Hive表的数据存储格式一般选择ORC或Parquet,压缩方式则根据具体场景选择Snappy、LZO等。建议除接口表外,其他表的存储格式与压缩格式保持一致,以简化管理和优化性能。
热门推荐
机器学习入门:基本原理与核心概念详解
滤波电抗器要怎么取值
三角形内切圆的奥秘:揭开半径的秘密
恶寒如何调理?这几个方法帮助有效改善
大同市博物馆:呈现民族融合缤纷图卷
防水补漏喷雾与防水补漏胶:特性、优劣与选择指南
「1 软、2 晕、3 多」, 这些信号提醒脑梗来临!
天天吃吃沙库巴曲缬沙坦降血压,5个用药细节要牢记!
潍坊奎文区:城市商圈里开出“非遗花”
红薯逆袭?科学研究:坚持吃红薯,不出半年,或能收获这4种好处
打鼾可能是健康警报!这几个防打鼾实用妙招,后悔现在才知道
如何有效缓解职场人际关系冲突?
视觉传达设计的全面解析:元素、原则、趋势与实践
如何正确连接电器设备以确保安全?这些连接方法有哪些常见误区?
腰椎间盘突出症的阶梯治疗方案
越吃越健康的碱性食物与生活小妙招
使用IPMI工具实现对服务器的远程管理
发照片怎么开权限管理
照片储存隐私怎么设置的
详解美陆战队步兵连和15人步兵班
什么是区块链的工作量证明(PoW)?
八字命理:劫财、阳刃、阴刃、羊刃和帝旺的区别
一战名将福煦:曾指挥三条战线,三条中国城市道路以他命名
刘永:核聚变,作为未来能源的挑战与应对
揭秘INTP:适合什么样的伴侣
如何让家储物量大还整齐好打理?装修时做7种设计,人见人夸!
一次崴脚“经常崴”?护脚秘籍!
下架!查封!停播!道歉!今夜 彻底爆了!网友:呼唤雷军......
《奇幻文学简史》:一部穿越时空的魔法之旅
支持手柄的手机游戏有哪些?2024年能用手柄玩的手游推荐