当前位置: 首页 > news >正文

[数据存储] 浅析 Hive 数据存储格式

0 序言

  • 续接[数据存储] 浅谈大数据领域的数据存储格式:ORC / Avro / Parquet / Arrow- 博客园/千千寰宇,展开回顾一下 Hive 的数据存储格式。

1 概述: Hive

  • Hive支持多种存储格式,选择合适的存储格式对于提升查询性能和存储效率至关重要。
  • 常见的Hive存储格式包括TextFile、SequenceFile、RCFile、ORCFile和Parquet。
  • 这些格式中,TextFile是默认的存储格式,而SequenceFile、RCFile、ORCFile和Parquet则提供了更高效的数据压缩和查询性能。

TextFile存储格式

  • TextFile是Hive的默认存储格式,它将数据以纯文本形式存储,不进行任何压缩处理。

  • 创建TextFile格式的Hive表时,可以直接使用LOAD DATA语句将数据加载到表中,这是因为TextFile不涉及数据压缩,因此加载速度快。

  • 但是,TextFile格式的缺点是磁盘占用较大,且在查询时需要逐个字符判断分隔符,导致查询效率不高。

SequenceFile存储格式

  • SequenceFile是Hadoop提供的一种二进制文件格式,支持数据的可分割和压缩。
  • 它以键值对的形式存储数据,可以选择记录压缩或块压缩。
  • SequenceFile格式的表不能直接从本地文件加载数据,需要先将数据导入到TextFile格式的表中,然后使用INSERT语句导入到SequenceFile格式的表中。

RCFile存储格式

  • RCFile(Row Columnar File)是一种行列混合存储的文件格式,它先将数据按行分组,然后在每个行组内部进行列式存储。
  • RCFile格式的表在查询时可以避免读取不必要的列,且同列数据类型一致,有利于数据压缩。
  • 但是,RCFile在重建行数据时可能会有较大的开销,尤其是当数据分布在不同的HDFS块上时。

ORCFile存储格式

  • ORCFile(Optimized Row Columnar File)是对RCFile的优化,提供了更高效的压缩和查询性能。
  • ORCFile在每个文件中提供了多级索引,可以快速定位查询数据,减少不必要的磁盘和网络I/O。
  • ORCFile支持ACID事务,允许对Hive表的单个记录进行修改。
  • 创建支持ACID事务的ORCFile格式的Hive表时,需要将表设置为分桶表,并在表属性中添加'transactional'='true'

Parquet存储格式

  • Parquet是另一种高性能的列式存储格式,它将数据分成多个行组,每个行组内部再分成若干页。
  • Parquet文件中包含了丰富的元数据信息,有助于提升数据读取效率。
  • Parquet在嵌套式结构支持上表现更佳,而ORC在多层级嵌套表达上可能会有性能损失。

存储格式的选择

  • 在选择Hive存储格式时,需要考虑数据的压缩比、查询速度和HDFS上的文件名。

    • ORCFile通常提供最高的压缩比,而Parquet和ORCFile在查询速度上相近。
    • 如果表中的数据需要压缩,可以选择SequenceFile、RCFile、ORCFile或Parquet格式。
    • 对于大数据量的场景,选择支持切分的压缩格式如Parquet的Lzo压缩会更加合适。
  • 在实际应用中,可以根据数据的特点和查询需求选择最合适的存储格式。

例如,对于需要频繁查询某几列数据的场景,列式存储格式如ORCFile或Parquet可能更优。

  • 而对于需要经常全表扫描的场景,行式存储格式如TextFile可能更合适。
  • 此外,还可以根据存储和查询的性能需求,对Hive表进行相应的配置优化,如设置压缩类型和大小、调整内存缓冲池大小等1。

Y 推荐文献

  • [数据存储] 浅谈大数据领域的数据存储格式:ORC / Avro / Parquet / Arrow- 博客园/千千寰宇

X 参考文献

http://www.jsqmd.com/news/48820/

相关文章:

  • 给z同学调差文件解析记录
  • 循环材料特性 11
  • KEYDIY KD-MAX KD-MATE: Key, Remote Programming Tool for Euro/American Cars
  • 我用 Cloudflare 免费撸了一个高颜值的网站监控系统 (支持 SSL 证书/域名过期提醒 + 钉钉告警)
  • codex 的安装
  • 3.多线程与智能指针
  • TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
  • C#/.NET/.NET Core技术前沿周刊 | 第 62 期(2025年11.17-11.23)
  • KEYDIY MLB26 434 Mhz 3-Button Universal Smart Remote PCB Board - Non-OEM Solution
  • KEYDIY MLB08 434MHz OEM Smart Key PCB: Audi-Style 3-Button Universal for EU/US Cars
  • 完整教程:Python pip instsll报错 Can‘t connect to HTTPS URL because the SSL module is not available.
  • Semgrep体验
  • 102302133陈佳昕作业3
  • CSAPP 处理器体系结构
  • AI协助 一周打造「七巧板益智小游戏」:从零高效开发教学工具
  • 【MCP系列】用 MCP 扩展 AI 编辑器:从零开发一个自己的MCP服务
  • VB6版MP3文件信息编辑器 - 开源研究系列文章 - 个人小作品
  • 手把手教你用 React + Zustand 打造 Windows 风格可拖拽,缩放,多窗口 Modal 组件
  • ImGui Learn Data Day 1
  • OI 笑传 #34
  • 【MCP系列】介绍一个我自己开发的MCP工具:MCP Shipit
  • 第34天(简单题中等题 数据结构)
  • 3. Gin RESTful API 开发
  • 说课逐字稿2
  • 251123头疼的一天
  • Codeforces Round 1066 (Div. 1 + Div. 2) 做题记录
  • 2025.11.23总结
  • 字符串常见操作
  • 广州比较靠谱的留学中介
  • SpringBoot 2.x - 3.x 踩坑记录