iceberg:基于大数据生态的高性能分析表格式项目

Apache Iceberg

分支1Tags0
文件最后提交记录最后更新时间
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
2 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
6 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
5 年前
1 年前
1 年前
1 年前
1 年前
2 年前
1 年前
2 年前
2 年前
2 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
6 年前
1 年前
1 年前
1 年前

本软件在 Apache 软件基金会(ASF)下根据一个或多个贡献者许可协议获得授权。请查看随本作品分发的 NOTICE 文件,以获取关于版权所有权的额外信息。ASF 按照Apache许可证2.0版(以下简称“许可证”)向您授权此文件,您只有在符合许可证的前提下才能使用此文件。您可以在此处获得许可证的副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件将以“现状”为基础,不附带任何形式的明示或默示保证或条件。具体权限和限制请参见许可证。

Iceberg

Java CI Slack

Iceberg 是面向巨大分析表的高性能格式。Iceberg 将 SQL 表的可靠性和简便性带入大数据领域,同时使得 Spark、Trino、Flink、Presto、Hive 和 Impala 等引擎能够安全地同时操作同一组表。

背景资料和文档请访问 https://iceberg.apache.org

状态

Iceberg 正在 Apache 软件基金会进行积极开发。

Iceberg 格式规范 已稳定,每个新版本都会添加新特性。

核心 Java 库位于本仓库,是其他库的参考实现。

文档 为所有库和集成提供支持。

协作

Iceberg 使用 GitHub 跟踪问题,并首选通过拉取请求接收贡献。

社区讨论主要在 开发者邮件列表 或具体问题上进行。

构建

Iceberg 使用 Java 11、17 或 21 版本的 Gradle 构建。

  • 要调用构建并运行测试:./gradlew build
  • 要跳过测试:./gradlew build -x test -x integrationTest
  • 要修复默认版本的代码风格:./gradlew spotlessApply
  • 要修复所有版本 Spark/Hive/Flink 的代码风格:./gradlew spotlessApply -DallModules

Iceberg 表支持在库模块中组织:

  • iceberg-common 包含其他模块中使用的工具类
  • iceberg-api 包含公共 Iceberg API
  • iceberg-core 包含 Iceberg API 的实现和对 Avro 数据文件的支持,这是处理引擎应依赖的内容
  • iceberg-parquet 是一个可选模块,用于处理基于 Parquet 文件的表
  • iceberg-arrow 是一个可选模块,用于将 Parquet 数据读入 Arrow 内存
  • iceberg-orc 是一个可选模块,用于处理基于 ORC 文件的表
  • iceberg-hive-metastore 是基于 Hive 元存储 Thrift 客户端的 Iceberg 表的实现
  • iceberg-data 是一个可选模块,用于直接从 JVM 应用程序处理表

Iceberg 还具有为处理引擎添加 Iceberg 支持的模块:

  • iceberg-spark 是 Spark 的 Datasource V2 API 的 Iceberg 实现,包含针对每个 Spark 版本的子模块(使用运行时 jar 来获得阴影版本)
  • iceberg-flink 包含与 Apache Flink 集成的类(使用 iceberg-flink-runtime 来获得阴影版本)
  • iceberg-mr 包含用于与 Apache Hive 集成的 InputFormat 和其他类
  • iceberg-pig 是 Pig 的 LoadFunc API 的 Iceberg 实现

注意

测试需要 Docker 来执行。在 MacOS(带有 Docker Desktop)上,您可能需要创建一个指向 docker 套接字的符号链接,以便测试能够检测到它:

sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock

引擎兼容性

请访问多引擎支持页面,以了解Iceberg与不同版本Spark、Flink和Hive的兼容性信息。 对于其他引擎如Presto或Trino,请访问它们的官方网站,以获取Iceberg集成的详细信息。

实现

本代码库包含Iceberg的Java实现。其他语言的实现可参考以下链接: