一文搞懂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等。建议除接口表外,其他表的存储格式与压缩格式保持一致,以简化管理和优化性能。
热门推荐
香港科技大学2025年内地高考入学招生简章发布!
C语言变量类型选择指南:内存、范围与性能的权衡
中管干部的工作绩效如何评估?
中医学中的三焦是什么?【全】
三焦通调法:“上焦宜清解,中焦宜调理,下焦分虚实”
“老高要退休了!” 来话别的大妈把警务室快挤爆了
探访重庆彭水:立足“九苗”文化打造“世界苗乡”
被迫离职的法律依据
蓝思科技定增复盘:价值投资中的周期博弈与人性考验
电信工程技术与标准化的主要内容是什么?
猫咪梳毛的最佳时间与正确方式(宠物爱护之道)
客服岗位面试自我介绍的要点与范文
国家推荐的减肥攻略:科学饮食搭配合理运动,轻松甩掉赘肉
物联网框架全解析:架构、技术与发展趋势
笑傲江湖3D手游唐门门派背景全解析
如何执行限价委托以优化交易策略
猪苓的功效与作用及使用禁忌
小提琴演奏技术的难关-双音
散杂船海运的定义、特点、应用领域以及面临的挑战与机遇
清明节的日期怎么定的
自己房子的户型图要哪里找?获取方式全面解析
星巴克咖啡好喝的冲泡要素- 咖啡豆研磨度一般与萃取工具的搭配
日本工资水平已匹配央行通胀目标?高盛:还得再涨
如何使用开源工具进行数据分析
2025年外科医生培训计划
如何计算菜籽油的重量与体积关系?这种计算方法在实际中有哪些应用?
的地得用法区别
“去年今日此门中 人面桃花相映红。”的意思及全诗翻译赏析
一个正常煎饼果子热量是多少
催吐相当于没吃吗?这些危害你必须知道