数据湖大数据数据存储【免费下载链接】icebergApache Iceberg项目地址https://gitcode.com/gh_mirrors/icebe/iceberg点击查看免费下载Apache Iceberg 社区于 2026 年 1 月发布了 Iceberg C 的 0.2.0 版本。这是自 0.1.0 以来的第二个里程碑版本累计合并超过 200 个 Pull Request由 23 位贡献者共同完成。本指南围绕该版本的 Release Highlights 展开梳理表扫描与数据访问、表操作与事务、REST Catalog、表达式系统、I/O 性能以及工程基建等核心改进并结合本仓库中 Java 侧对应的实现源码帮助读者理解这些能力的设计意图与底层原理。发布概览0.2.0 版本是一次横跨读取、写入、目录、表达式与构建体系的系统性升级。官方发布说明指出以下列出的仅是精选亮点版本还包含大量 Bug 修复与其他改进完整变更记录以官方 Changelog 为准。本仓库Apache Iceberg 主仓库中对应的 Java 实现为理解 C 侧这些功能提供了最直接的设计参照——例如 ManifestReader.java 之于Manifest 读取增强、InMemoryCatalog.java 之于内存目录实现、RESTCatalog.java 之于REST Catalog 客户端。表扫描与数据访问v2 Deletes 与元数据列读取0.2.0 为表扫描引入了对 v2 格式删除文件deletes的支持并支持元数据列metadata column的读取。在 Iceberg v2 规范中删除文件与数据文件并列存放于 Manifest 中读取时需要区分二者。本仓库中的 ManifestReader.java 正是这一设计的直接体现其内部通过FileType枚举区分DATA_FILES与DELETE_FILES并分别以GenericDataFile与GenericDeleteFile作为文件类构造函数中对delete manifest 不允许携带 firstRowId做了前置校验确保读取语义正确。元数据列如_file、_pos、_partition等则由 MetadataColumns.java 统一定义。ManifestReader 的投影与过滤增强新的 ManifestReader 支持投影projection与过滤filtering这意味着读取 Manifest 文件时不再需要反序列化全部字段而可以只取所需列、只读符合条件的条目。从 ManifestReader.java 的源码结构可以看到读取器内置了partitionSet分区集合、partFilter分区过滤表达式、rowFilter行过滤表达式、fileProjection文件 Schema 投影与columns列集合等配置状态并支持大小写敏感切换过滤与投影都采用惰性求值Evaluator与InclusiveMetricsEvaluator均在被需要时才初始化。这种配置方法更新状态、迭代时才真正计算的模式正是扫描阶段高效跳过无关文件的性能基础。File Scan Task 读取器与 Arrow C Stream 集成版本实现了文件扫描任务file scan task读取器并集成了 Arrow C Stream 接口使 C 侧扫描出的数据可以直接以 Arrow 格式暴露给下游计算框架便于与 DataFusion、DuckDB 等 Arrow 生态工具衔接。这是 C 实现迈向可嵌入查询引擎的数据源的关键一步。表操作与事务Schema 演进0.2.0 支持完整的 Schema 演进能力新增列add、删除列delete、更新列update以及移动列move。这是 Iceberg 表可演进、不重写数据承诺的核心——通过维护 Schema 版本列表历史数据文件仍可被新 Schema 正确读取。表级更新版本支持对表的属性properties、排序方式sort order、分区规范partition spec、表位置location以及统计信息statistics进行更新。分区规范的演进在 Iceberg 中由PartitionSpec按 ID 版本管理读取时按 specId 匹配历史分区布局本仓库的 ManifestReader.java 在读取 Manifest 时也会解析partition-spec-id并反序列化对应分区规范验证了按 specId 关联这一机制在读取路径上的落地。事务 API 与快照管理Fast Append新引入的事务 API 支持以原子方式组合多个表操作并围绕快照snapshot进行管理其中快速追加fast append允许在同一快照下批量追加文件减少提交次数、降低元数据写入开销。本仓库的 Java 侧提供了完整对照实现Transactions.java 是事务的工厂入口BaseTransaction.java 实现事务的提交与快照生成SnapshotManager.java 负责快照的创建与管理。从源码结构看事务提交时通过SnapshotManager生成新快照并原子更新表元数据这正是 Iceberg 快照隔离 乐观并发模型在写入端的体现。REST Catalog 客户端0.2.0 提供了完整的 REST Catalog 客户端覆盖命名空间namespace操作与表的 CRUD 操作具体包括创建表create、加载表load、删除表drop、列出表list、更新表update以及 stage-create 表操作并配备了集成测试覆盖。本仓库中 RESTCatalog.java 是这一功能在 Java 侧的完整实现而其可配置性集中体现在 RESTCatalogProperties.java 中可供 C 实现参考的关键配置项包括snapshot-loading-mode快照加载模式默认ALL可选REFS控制加载表时携带的快照范围scan-planning-mode扫描规划模式默认CLIENT可选SERVER决定扫描计划在客户端还是服务端生成rest-page-sizeREST 分页请求的页面大小namespace-separator命名空间分隔符rest-metrics-reporting-enabled是否启用 REST 指标上报默认truerest-scan-planning.poll-timeout-ms与rest-scan-planning.poll-num-retries服务端扫描规划的轮询超时与重试次数rest-table-cache.expire-after-write-ms与rest-table-cache.max-entries表缓存的有效期与最大条目数。这些参数对 REST Catalog 的兼容性、性能与网络行为有直接影响是集成 REST 服务时最重要的调优点。表达式系统表达式框架0.2.0 建立了完整的表达式框架包括字面量表达式literal expressions、类型转换type casting以及二进制序列化binary serialization。表达式既可以用于构造过滤条件也可以在客户端与服务端之间传输。求值器体系版本提供了多种求值器Inclusive包容指标求值器利用列统计信息如 min/max、null 计数判断文件可能包含匹配行用于粗粒度跳过Strict严格指标求值器判断文件必然满足条件用于精确跳过Manifest 求值器在 Manifest 层面应用过滤Residual残差求值器计算谓词下推后仍须在行级执行的剩余表达式。本仓库中这些求值器的 Java 实现位于 api/src/main/java/org/apache/iceberg/expressions包括 InclusiveMetricsEvaluator.java、StrictMetricsEvaluator.java 与 ResidualEvaluator.javaProjections.java 负责将表达式投影为分区过滤或指标过滤形式。此外还支持聚合表达式aggregate expressions与投影求值器projection evaluators。这套体系构成了 Iceberg 数据跳过data skipping的完整链路分区投影 → Manifest 过滤 → 指标求值 → 残差求值。性能与 I/O优化后的 Avro 读写器采用直接编码direct encoding与多块multi-block支持减少中间拷贝、提升吞吐可配置的 Avro/Parquet 读写器读写行为可通过配置调整便于针对不同工作负载进行调优。Avro 在 Iceberg 中不仅用于数据文件也用于 Manifest 与元数据文件。本仓库的 ManifestReader.java 在读取 Manifest 元数据时要求文件格式为 AVRO并通过AvroIterable获取文件级元数据如partition-spec-id、schema、partition-spec印证了 Avro 读写性能对整个元数据路径的影响。目录与元数据InMemoryCatalog0.2.0 提供了InMemoryCatalog实现支持完整的表管理能力。从本仓库 InMemoryCatalog.java 的实现看它使用三个ConcurrentMap分别存储命名空间、表与视图不触碰任何外部资源可无副作用地用于单元测试初始化时支持warehouse-location与unique-table-location等属性并提供dropTable(purge)、listTables、renameTable等完整操作覆盖命名空间与表的全生命周期。位置与路径版本实现了位置提供器location provider与分区路径生成partition path generation用于决定表与数据文件在存储上的布局。Schema 与元数据构建版本还实现了 Schema 选择schema selection、投影projection以及表元数据构建器table metadata builder为后续的写路径与多版本元数据管理奠定基础。工程与基建改进Meson 构建系统支持新增 Meson 作为备选构建方式便于不同环境下的编译与打包初始文档网站与 devcontainer建立了初始文档站点并提供开发容器devcontainer配置降低新贡献者的环境搭建门槛代码组织与类型安全改进代码组织结构并通过校验validation增强类型安全。贡献者本版本共有 23 位贡献者参与。官方发布说明使用以下命令生成了贡献者统计不含 dependabot 机器人提交$ git shortlog --perl-regexp --author^((?!dependabot\[bot\]).*)$ -sn v0.1.0..v0.2.0 47 Feiyang Li 47 Junwang Zhao 41 Gang Wu 17 Zhuo Wang 15 Xinli Shang 14 Zehua Zou 9 Guotao Yu 7 Xiao Dong 6 Chao Liu 3 Jiajia Li 3 Shuxu Li 2 Kevin Liu 2 William Ayd 2 Zhiyuan Liang 1 Dipanshu Pandey 1 Subham 1 liuxiaoyu 1 slfan19890.3.0 路线图与社区参与社区正在积极推进 0.3.0 版本的开发对应官方 issue 列表中的里程碑议题。任何感兴趣的同学都可以参与问题可以通过官方 Issue 提交讨论可以发生在 GitHub 或 Iceberg 开发者邮件列表中官方社区页面提供了邮件列表的详细入口。对于希望从源码层面深入理解本版本功能的读者建议对照本仓库中上述 Java 实现文件进行交叉阅读可以更清晰地把握设计意图与实现边界。赞分享数据湖大数据数据存储【免费下载链接】icebergApache Iceberg项目地址https://gitcode.com/gh_mirrors/icebe/iceberg点击查看免费下载相关推荐Apache Iceberg C 0.3.0 发布深度解读增量扫描、Merge-on-Read 与 REST Catalog 能力全面落地Apache Iceberg C 0.3.0 发布深度解读增量扫描、Merge on Read 与 REST Catalog 能力全面落地 Apache数据湖大数据数据存储Feast IcebergSource 数据源完全指南通过 REST / Hive / Glue 等 Catalog 接入 Apache Iceberg 表Feast IcebergSource 数据源完全指南通过 REST / Hive / Glue 等 Catalog 接入 Apache Iceberg 表MLOps后端数据工程Apache Iceberg Flink DDL 完全指南Catalog 创建、建表与表结构演进Apache Iceberg Flink DDL 完全指南Catalog 创建、建表与表结构演进 本文以 Apache Iceberg 官方 Flink 集成数据湖大数据数据存储上一篇Cangjie TOML入门指南3步将TOML字符串转换为DataModel下一篇Mailur性能优化10个技巧提升轻量级Web邮件的响应速度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考 SEO 优化官网定制响应式建站教育培训建站