科普:“表格式 ”与“ 存储格式”

表格式(Table Format)和存储格式(File Format)的总结如下,结合其核心特点和典型应用场景:


一、存储格式(File Format)

存储格式定义数据在文件中的物理存储方式,直接影响读写性能、压缩效率和兼容性。

1. 列式存储
  • Parquet

    • 特点:列式存储,高压缩率,支持复杂嵌套结构,适合 OLAP 场景。
    • 应用:大数据分析(Spark、Hive)、数据湖存储。
    • 示例user.parquet 文件按列存储 user_id, name, age
  • ORC (Optimized Row Columnar)

    • 特点:优化行列混合存储,支持索引和谓词下推,Hive 生态常用。
    • 应用:Hive 数据仓库、批量 ETL 处理。
    • 示例sales.orc 文件按列存储订单数据,含轻量索引加速查询。
2. 行式存储
  • Avro

    • 特点:基于 Schema 的行式存储,支持动态模式演化,适合流式数据传输。
    • 应用:Kafka 消息序列化、跨语言数据交换。
    • 示例:Kafka 中的用户行为日志以 Avro 格式存储。
  • CSV/TSV

    • 特点:纯文本,人类可读,兼容性强,但无压缩和模式信息。
    • 应用:数据导入导出、小型数据集交换。
    • 示例data.csv 文件以逗号分隔存储用户信息。
  • JSON

    • 特点:半结构化,支持嵌套数据,但解析效率低。
    • 应用:Web API 响应、日志存储。
    • 示例logs.json 文件记录应用日志,含时间戳和事件详情。
3. 混合存储
  • Arrow
    • 特点:内存列式格式,零拷贝读取,用于高速内存计算。
    • 应用:Pandas、Spark 内存计算,跨系统数据传输。
    • 示例:Spark 与 Flink 通过 Arrow 格式共享内存数据。

二、表格式(Table Format)

表格式是逻辑层的元数据规范,管理数据文件的组织、事务、版本等,与存储格式解耦。

1. 数据湖表格式
  • Apache Iceberg

    • 特点:支持 ACID 事务、隐藏分区、时间旅行,引擎无关(Flink/Spark/Trino)。
    • 应用:实时数据湖、多引擎协作。
    • 示例:Flink 实时写入 Iceberg 表,Spark 批处理分析。
  • Delta Lake

    • 特点:基于 Spark 生态,提供 ACID 事务和 Upsert 操作,深度集成 Spark。
    • 应用:湖仓一体、频繁更新的场景(如用户画像)。
    • 示例:Spark Streaming 写入 Delta Lake,支持 Merge 操作更新数据。
  • Apache Hudi

    • 特点:专注于增量更新(CDC),支持高效的 Upsert 和增量拉取。
    • 应用:实时数据管道、CDC 场景。
    • 示例:MySQL Binlog 同步到 Hudi 表,下游消费增量数据。
2. 传统表格式
  • Hive 表
    • 特点:基于目录分区,元数据存储在 Hive Metastore,功能简单。
    • 应用:离线批处理(Hive/Spark SQL)。
    • 示例:Hive 表按日期分区存储日志,通过 HQL 查询。

三、核心对比

类别代表格式核心目标典型场景
存储格式Parquet、ORC、Avro优化单文件存储效率数据分析、序列化传输
表格式Iceberg、Delta、Hudi管理多文件逻辑与元数据数据湖、ACID 事务、多引擎协作

四、应用场景示例

  1. 实时数仓

    • 存储格式:Parquet(高效列式存储)。
    • 表格式:Iceberg(事务支持 + 时间旅行)。
    • 流程:Kafka → Flink 实时处理 → 写入 Iceberg(Parquet 文件) → Trino 查询。
  2. 频繁更新的用户数据

    • 存储格式:ORC(压缩率高)。
    • 表格式:Delta Lake(Upsert 支持)。
    • 流程:Spark 读取用户表 → Merge 操作更新 → 写入 Delta Lake。
  3. 日志分析

    • 存储格式:JSON(原始日志半结构化)。
    • 表格式:Hive 表(简单分区管理)。
    • 流程:日志文件(JSON) → Hive 表分区存储 → Hive SQL 分析。

五、实际架构设计

  • 存储格式:解决单文件如何高效存储数据,关注压缩、编码、读写性能。
  • 表格式:解决多文件如何组织与管理,关注事务、版本、跨引擎兼容性。

通常组合使用两者,例如:

  • 数据以 Parquet 格式存储,
  • 通过 Iceberg 表格式管理,
  • 实现高效存储与逻辑管理的双重优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值