ITADN
apache/iceberg
apache/iceberg · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Iceberg

Slack

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

背景信息和文档可在 https://iceberg.apache.org 获取

状态

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

Iceberg 格式规范 是稳定的,并且每个版本都会添加新功能。

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

所有库和集成的文档均可获取。

协作

Iceberg 在 GitHub 上跟踪问题,并倾向于以拉取请求的形式接收贡献。

社区讨论主要发生在 dev 邮件列表 或特定问题上。

构建

Iceberg 使用 Gradle 和 Java 17 或 21 进行构建。

  • 要调用构建并运行测试:./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 metastore Thrift 客户端的 Iceberg 表实现
  • iceberg-data 是一个用于直接从 JVM 应用程序处理表的可选模块

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

  • iceberg-spark 是 Iceberg 的 Spark Datasource V2 API 实现,包含针对每个 Spark 版本的子模块(请使用 runtime jars 获取 shaded 版本以避免依赖冲突)
  • iceberg-flink 包含用于与 Apache Flink 集成的类(请使用 iceberg-flink-runtime 获取 shaded 版本)
  • iceberg-mr 包含 InputFormat 及其他用于与 Apache Hive 集成的类

NOTE

测试需要 Docker 才能执行。在 macOS(使用 Docker Desktop)上,您可能需要为 docker socket 创建一个符号名称,以便被测试检测到:

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

在某些情况下,由于 GenericContainer 中的非法状态异常,测试容器可能会因初始化错误而退出。 解决此问题的一种变通方法是在运行测试之前将 selinux 设置为 permissive 模式。

sudo setenforce Permissive
./gradlew ...
sudo setenforce Enforcing

文档

有关构建文档的信息,请参阅此处

引擎兼容性

请参阅多引擎支持页面,了解 Iceberg 与不同版本 Spark、Flink 和 Hive 的兼容性。 对于 Presto 或 Trino 等其他引擎,请访问其网站以获取 Iceberg 集成详情。

实现

本仓库包含 Iceberg 的 Java 实现。其他实现可在以下位置找到: