hive的存储格式TextFile、RCFile、ORC

hived的存储格式TextFile、RCFile、ORC

  • 说明:所谓的存储格式就是hive的数据在hdfs上存放的具体方式;通过下面的文件我们看出hive的存储格式是一共有六种,每一种都是由自己的规则。
file_format:
  : SEQUENCEFILE
  | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
  | RCFILE      -- (Note: Available in Hive 0.6.0 and later)
  | ORC         -- (Note: Available in Hive 0.11.0 and later)
  | PARQUET     -- (Note: Available in Hive 0.13.0 and later)
  | AVRO        -- (Note: Available in Hive 0.14.0 and later)
  | JSONFILE    -- (Note: Available in Hive 4.0.0 and later)
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

行式存储格式和列式存储格式的区别

属性1属性2属性3
a1b1c1
a2b2c2
行式存储:
  • 说明:

    • 数据是一行行进行存储的。

    • 对于以上表格的数据而言,数据的存储。

a1b1c1a2b2c2
  • 优点:

    • 相关的数据保存在一起,这种方式比较方便进行插入和修改。
  • 缺点:

    • 如果查询只涉及少数几个列,会把整行的数据都读取出来,如果数据量比较少,问题不大,但是如果数据量比较大,就产生缓存的异常。

    • 由于每一行中列的数据类型并不一致,导致并不能设置一个比较高的压缩比,所以空间的利用率不高。

列式存储:
  • 说明:

    • 数据是一列列进行存储的。

    • 对于以上表格的数据而言,数据的存储。

a1a2b1b2c1c2
  • 优点:

    • 查询时只有涉及到的列才会查询出来,并不是把所有的列都查询出来。

    • 一个列中的数据类型都是一致的,所以可以提供一个较高的压缩比。

  • 缺点:

    • Insert /update的时候比较麻烦

    • 不适合查询小量的数据

TextFile文件存储格式

  • 说明:

    • TexFile 他是一个行式存储的存储格式 ,并且通常是默认的存储格式。

    • 可以跳过不必要读取的列读取。

    • RCFile把数据分成多个block ,每一个block里以rowgroup为单位,存储在HDFS上的一个block里面的所有记录会被划分为多个rowgroup。

  • rowgroup 里包括了3个部分:

    • sync: 行组头部的一个同步标志,主要用于隔离HDFS两个连续块的行组

    • metadataHeader: 行组的元数据,记录每一个列的字节数,以及列的大小

    • 实际存储数据的顺序

ORCFile文件存储格式

  • 说明:

    • ORC 的存储格式与RCFile的rowgroup的存储格式类似,ORC是按照stripes组织记录的(默认大小为250MB)。
  • ORC的存储格式分为以下几个部分:

    • 多个stripe 每一个stripe为250MB的大小。

    • 每一个stripe又包含了一个indexData (数据索引),RowData(行数据)StripeFooter ,默认大小也是250MB 块大的好处就是HDFS的读取效率高

    • indexData :包含了行的偏移量,以及每一列的最大值与最小值

    • RowData: 保存的是实际的数据

    • StripeFooter 数据读取的列的位置

PARQUET文件存储格式

  • 说明:
    • 是面向分析型的列式存储格式,并且是以二进制方式存储的,所以parquet 文件是不能直接读取的,其里面包含了文件的数据,以及文件的元数据,所以parquet是支持自解析的一个存储格式类似于一个小型的数据库。
<think>嗯,用户想了解Hive支持的存储格式以及如何选择合适的。首先我需要回忆Hive常见的存储格式有哪些。记得有TextFile、SequenceFile、RCFileORCFile、Parquet这些。然后每个格式的特点和适用场景需要理清楚。 比如TextFile是最基础的,纯文本,适合导入导出方便,但性能可能差。SequenceFile是二进制,支持压缩和分割,可能适合中间数据存储RCFile是行列混合,而ORC和Parquet是更高效的行列式存储,适合查询性能要求高的场景。 然后用户可能关心如何选择,比如需要考虑压缩、查询速度、是否频繁更新、是否与外部系统交互等因素。比如ORC和Parquet在分析查询时表现好,但如果需要和Sqoop交互的话可能得用TextFile,像引用4提到的。 还要注意引用里的信息,比如引用2提到ORC和Parquet实际应用多,引用4提到Sqoop需要TextFile。所以回答里要结合这些引用,给出格式列表和使用建议,最后生成相关问题。需要确保LaTeX格式正确,行内用$,独立公式用$$,但问题里可能数学公式不多。可能涉及压缩类型如Snappy、Gzip,这些在引用1里提到,所以需要关联到存储格式的选择中。</think>### Hive支持的存储格式及使用场景 Hive支持多种存储格式,每种格式针对不同场景优化。以下是主要格式的特点和应用建议: #### 一、存储格式列表 1. **文本格式TextFile)** - **特点**:默认格式,纯文本存储(如CSV、TSV),可读性强,但无压缩且查询效率低 - **适用场景**: - 数据导入/导出需求频繁的场景(如与Sqoop交互时需使用TextFile[^4]) - 临时数据或小规模数据集 - **示例建表语句**: ```sql CREATE TABLE logs (id INT, content STRING) STORED AS TEXTFILE; ``` 2. **二进制序列化文件(SequenceFile)** - **特点**:二进制键值对存储,支持压缩和分片,适合Hadoop生态链交互 - **适用场景**: - MapReduce作业中间结果存储 - 需兼容Hadoop其他组件的场景 3. **行列式文件(RCFile)** - **特点**:行组内列式存储,压缩比高于TextFile,但性能弱于ORC/Parquet - **适用场景**: - 历史遗留系统兼容 - 需平衡存储与查询的场景(逐渐被ORC/Parquet替代) 4. **优化的行列式文件(ORCFile)** - **特点**: - 列式存储,支持高压缩比(如Zlib、Snappy[^1]) - 内置索引(如布隆过滤器)加速查询 - 支持ACID事务 - **适用场景**: - 大规模数据分析(如数仓核心表) - 高并发查询场景[^2] - **示例建表语句**: ```sql CREATE TABLE user_behavior (user_id STRING, action STRING) STORED AS ORC; ``` 5. **Apache Parquet** - **特点**: - 列式存储,支持嵌套数据结构 - 高效压缩(兼容Snappy、Gzip[^1]) - 适合Spark等生态工具 - **适用场景**: - 复杂嵌套结构数据处理(如JSON日志) - 跨计算引擎协作场景(如Hive+Spark) #### 二、选择依据 $$ \text{选择公式} = \max \left( \frac{\text{查询性能} \times \text{压缩比}}{\text{写入成本} + \text{兼容性约束}} \right) $$ 1. **优先ORC/Parquet**:99%的生产场景首选,例如: - ORC适合Hive专属高频分析 - Parquet适合跨平台数据湖 2. **强制使用TextFile**: - 与Sqoop交互时[^4] - 数据需直接人工查看 3. **特殊需求**: - 频繁更新数据 → 使用ORC(支持ACID) - 极致压缩 → ORC+Zlib压缩 #### 三、性能对比 | 格式 | 压缩比 | 查询速度 | 写入速度 | 适用操作类型 | |------------|--------|----------|----------|--------------------| | TextFile | 低 | 慢 | 快 | 全表扫描 | | ORC | 高 | 快 | 中 | 列裁剪/聚合 | | Parquet | 高 | 快 | 中 | 嵌套查询/跨平台 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值