news 2026/6/25 16:11:08

Apache Iceberg:大数据分析表的统一存储格式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache Iceberg:大数据分析表的统一存储格式

文章目录

  • Apache Iceberg:大数据分析表的统一存储格式

Apache Iceberg:大数据分析表的统一存储格式

Apache Iceberg 是 Apache 基金会旗下的开源项目,目前在 GitHub 上获得了 8,983 个 Star。

Iceberg 定义了一种高性能的大数据分析表格式。它把 SQL 表的可靠性和易用性带到了大数据领域,让 Spark、Trino、Flink、Presto、Hive、Impala 这些引擎可以同时安全地操作同一张表。


背景

在大数据场景下,不同计算引擎往往各自维护一套表元数据,导致数据不一致、写入冲突、读取结果不可重复等问题。Iceberg 的出现就是为了解决这些问题。它在文件系统之上加了一层表格式抽象,记录了数据文件的位置、分区信息、schema 演变历史和快照版本。

有了这层抽象,上层引擎不需要关心底层文件的组织方式,直接通过 Iceberg 提供的 API 读写数据。跨引擎共享同一张表变成了标准操作。


核心能力

Iceberg 支持 ACID 事务。写入操作要么全部完成,要么全部回滚,不会出现中间状态。这意味着多个写入者可以同时操作同一张表而不会互相干扰。

Schema 演变方面,Iceberg 允许用户在不重写数据的情况下添加、删除或重命名列。分区也可以调整,已有的数据文件不需要重新组织。

Iceberg 维护了完整的快照历史。用户可以从任意快照点读取数据,实现时间旅行查询。这在数据回溯和审计场景下很有用。

文件格式上,Iceberg 支持 Parquet、ORC 和 Avro 三种存储格式,用户可以根据场景选择。


多引擎兼容

Iceberg 的设计目标之一就是跨引擎兼容。当前支持的引擎包括:

  • Apache Spark:通过 Datasource V2 API 集成,每个 Spark 版本有对应的子模块
  • Apache Flink:提供专门的集成模块
  • Apache Hive:通过 InputFormat 方式接入
  • Trino / Presto:各项目自行维护 Iceberg 连接器

每个引擎集成模块都提供了 runtime jar,内置了所有依赖,避免版本冲突。


模块结构

Iceberg 的核心 Java 库按功能拆分成了多个模块:

  • iceberg-common:公共工具类
  • iceberg-api:对外公开的 API 接口
  • iceberg-core:API 的实现,包含 Avro 数据文件支持,是其他引擎集成的主要依赖
  • iceberg-parquet:Parquet 文件读写支持
  • iceberg-orc:ORC 文件读写支持
  • iceberg-arrow:将 Parquet 数据读入 Arrow 内存格式
  • iceberg-hive-metastore:基于 Hive Metastore Thrift 客户端的表元数据管理实现

多语言实现

除了 Java 参考实现,社区还在维护其他语言的版本:

  • Go 语言实现
  • Python 实现(PyIceberg)
  • Rust 实现
  • C++ 实现

不同语言的实现让 Iceberg 的使用场景从 JVM 生态扩展到了更广泛的领域。


构建与开发

Iceberg 使用 Gradle 构建,要求 Java 17 或 21。常用命令:

./gradlew build# 构建并运行测试./gradlew build-xtest# 跳过测试./gradlew spotlessApply# 自动修复代码格式

测试依赖 Docker 环境。在 macOS 上使用 Docker Desktop 时,可能需要手动创建 Docker socket 的符号链接。


总结

Iceberg 解决了大数据场景下多引擎共享表数据的核心问题。它通过表格式抽象层,统一了不同计算引擎对数据的访问方式,同时提供了事务支持、schema 演变和时间旅行等能力。对于需要在多个引擎之间共享数据的团队来说,Iceberg 是一个成熟的选择。

式抽象层,统一了不同计算引擎对数据的访问方式,同时提供了事务支持、schema 演变和时间旅行等能力。对于需要在多个引擎之间共享数据的团队来说,Iceberg 是一个成熟的选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 16:09:08

福州衣柜定制橱柜定制怎么选?2026年6家品牌真实体验对比

衣柜定制和橱柜定制是福州全屋定制里的两大核心项目,占了木作预算的大头,也是最容易踩坑的环节。从环保超标、五金生锈,到尺寸不符、收口粗糙,很多业主装完都吐槽“踩的坑比收纳格还多”。我们整理了6家不同定位的品牌真实体验&am…

作者头像 李华
网站建设 2026/6/25 16:03:42

AMAT 0190-B9760真空控制器

AMAT 0190-B9760 真空控制器为应用材料半导体设备配套的真空系统控制组件,适用于PVD、CVD及刻蚀工艺中的腔室压力监测与控制。应用材料原厂设计,与设备真空子系统硬件兼容。兼容Pirani热导式与冷阴极电离规等多种真空传感器。测量范围覆盖10⁻⁴ Torr至1…

作者头像 李华
网站建设 2026/6/25 16:01:57

近期程序员学量化,AI 写代码后还要看交易判断

程序员转向量化开发时,技术实现往往是最有吸引力的部分,因为它和已有经验最接近。但如果学习路径只围绕怎样写代码展开,就容易忽略另一半问题:策略为什么这样表达,以及这些表达能不能被转成明确流程。代码要回到规则本…

作者头像 李华
网站建设 2026/6/25 16:01:28

5个实用技巧:使用Dism++免费系统优化工具快速提升电脑性能

5个实用技巧:使用Dism免费系统优化工具快速提升电脑性能 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款功能强大的Windows维护工具和系统…

作者头像 李华
网站建设 2026/6/25 16:00:12

推理优化中“用精度换性能“的核心技术:量化

一、问题定义:显存带宽瓶颈与精度冗余的共存 大语言模型推理的性能困境,归根结底是一个数据搬运问题。 以 Llama-2-70B 在 H100 上的 decoding 阶段为例。这一阶段每次只处理单个 token,计算量约 140 GFLOPs,但需要从 HBM 搬运约…

作者头像 李华
网站建设 2026/6/25 15:57:30

GeekDesk极客桌面:如何用一款工具提升3倍桌面操作效率?

GeekDesk极客桌面:如何用一款工具提升3倍桌面操作效率? 【免费下载链接】GeekDesk 🔥小巧、美观的桌面快速启动工具 Small, beautiful desktop quickstart management tool with integrated Everything search 项目地址: https://gitcode.c…

作者头像 李华