Iceberg 社区周报 | 2026-W27

2026-06-29 ~ 2026-07-05

📢 公告 (0)

本周无公告

🗳️ 投票 (2)

💬 讨论 (10)

Row-delta commits and multi-table transactions in iceberg-rust ? patterns from a CDC producer

2 条回复 · 2 位参与者

讨论主要围绕在 iceberg-rust 中实现 RowDelta 提交和多表事务两项功能展开,作者提交了草稿 PR 以支持 Postgres 到 Iceberg 的 CDC 管道。Andrei 基于 iceberg-go 的开发经验提供了深入的代码审查和潜在陷阱提醒,Steve 随后采纳了部分建议并更新了代码。

@Steve (st...): 提交了 RowDeltaAction 和多表事务两个 PR,旨在填补 Rust 实现中写入/提交端的空白,并支持原子性地向多表提交行增量。

@Andrei Tserakhau: 指出序列号规则是正确性的核心,需确保相等删除仅应用于序列号更小的数据文件;同时警告仅测试位置删除可能会掩盖相等删除读取未实现的隐患。

@Steve (st...): 已根据反馈更新代码,包括修复操作类型选择逻辑、增加对无效相等键的校验,并明确了事务状态未知时的处理逻辑。

Steve 已根据反馈更新了 PR 代码,双方确认了序列号规则已正确实现。下一步 Steve 将参考 Andrei 在 Go 端的实现,重点跟进分区范围的冲突检测和压缩后孤立删除文件的清理逻辑。

Vector type support to Iceberg

1 条回复 · 2 位参与者

讨论旨在为 Iceberg 引入一等公民向量类型,以支持 AI/ML 场景中固定维度的向量嵌入,并配合 Parquet 社区的相关进展。提案建议采用固定维度、数值坐标的密集向量类型(如 float[768]),并明确了与底层文件格式的映射及模式演进方向。

@Yan Yan: 建议新增向量类型以解决现有 list 无法约束维度不变量的问题,首选方案是固定维度、元素非空的密集数值向量。

@Tanmay Rauth: 赞同保持初始类型范围最小化,建议明确 Parquet 映射规则,包括字段 ID 仅置于外层组、指标统计需符合向量语义而非元素级语义。

@Tanmay Rauth: 指出对于不支持向量的历史文件格式(如 Avro/ORC),新增向量列不应导致旧文件失效,但新写入必须使用支持的 Parquet 表示。

社区对引入向量类型的提案方向表示认可,后续将围绕提案文档中的 Parquet 字段 ID 映射规则、指标统计策略及文件格式兼容性细节进一步完善设计。

Iceberg technical blog posts, and a first attempt

1 条回复 · 2 位参与者

社区讨论了在 Iceberg 官方博客中增加技术类文章的计划,Matt Butrovich 提交了首篇关于 DataFusion Comet 和 Iceberg Rust 的文章草稿以征集反馈。该举措旨在补充原有的版本公告内容,展示实际应用案例并吸引开发者参与贡献。

@Matt Butrovich: 提交了首篇技术博客 PR,从用户和开发者双视角探讨 DataFusion Comet 与 Iceberg Rust,希望为后续技术分享建立先例。

@Andrei Tserakhau: 高度支持此类内容,认为其填补了博客空白,建议保留“用户故事到开发者故事”的结构,并提议将其发展为“Iceberg Beyond the JVM”系列。

初步确立了技术博客的写作范式,Andrei 计划撰写关于 iceberg-go 的后续篇章,后续将同步协调文章结构以保持风格一致。

Table and Column Label Metadata in Iceberg REST Catalog

0 条回复 · 1 位参与者

本次讨论回顾了 Iceberg REST Catalog 中表与列标签元数据的同步会议进展,指出读取路径的设计已趋于稳定,目前的重点是推动规范 PR 的审查。讨论明确了优先聚焦读取路径、将延迟要求定义为实现指导而非规范要求,并将结构化标签等复杂议题留待后续跟进。

@Ryan Blue, Daniel Weeks: 反对在规范中强制规定延迟要求,认为延迟由实现定义,规范应将其作为实现指导而非规范性要求。

@Andrei Tserakhau: 建议优先审查读取路径的规范 PR,强调标签当前仅限于 LoadTableResponse 上的扁平化元数据交换,写入路径不应阻塞审查。

@Prashant Singh: 提出了结构化标签的需求,认为扁平视图无法满足复杂的标签管理,但这应作为后续独立议题处理。

初步结论是读取路径的表示形式已定稿(consolidated labels shape),下一步行动是号召社区(特别是 PMC 和 Committer)重点审查规范 PR #15750,同时将结构化标签等议题安排在后续同步会议中讨论。

Handling of existing statistics files

0 条回复 · 1 位参与者

讨论主要关于 Iceberg 统计信息文件规范的改进,提议通过增加 'type' 字段来区分文件类型,并探讨了向后兼容性及不同实现(如 Spark 和 PyIceberg)处理未知 Blob 的差异。参与者还讨论了是否应复用现有框架来支持二级索引。

@dzeri96: 建议在统计文件元数据中增加 'type' 字段,定义 'iceberg-statistics-v1' 类型,并将 Blob 类型描述移至相应规范处。

@dzeri96: 认为旧版读取器可忽略 'type' 字段以保持向后兼容,且赞同 iceberg-spark 忽略未知 Blob 的处理方式。

@dzeri96: 认为二级索引应尽量复用现有的 statistics/puffin 文件框架,避免重复造轮子。

初步结论是建议通过增加元数据字段来优化规范,并倾向于采用 Spark 的容错处理逻辑,但邮件中未明确列出具体的下一步代码实施计划。

Proposal: File-Level Access Delegation in the Iceberg REST Catalog Spec

0 条回复 · 1 位参与者

William Hyun 发起关于 Iceberg REST Catalog 规范中文件级访问委托的讨论,针对预签名 URL 提出了“批量远程签名与缓存”的替代方案。他分析了作用域凭证分发在细粒度文件访问场景下的局限性(如 STS 频率和策略大小限制),并提交了一个 POC 代码以验证新方案的可行性。

@William Hyun: 作用域凭证分发适合少量稳定前缀的授权,但在大量特定文件的细粒度访问场景下,受限于 STS 请求频率和策略大小,不够实用。

@William Hyun: 远程签名结合缓存机制可以避免为每个文件集创建新的 STS 会话,是预签名 URL 的一个潜在实用替代方案。

@William Hyun: 已提交 POC PR 以具体展示远程签名加缓存的实现方式,旨在评估该方案在细粒度访问控制中的实际效果。

目前处于方案验证阶段,作者已发布 POC PR 供社区评估,欢迎社区提供反馈以决定是否采用该方向。

Declaring row-level bbox covering columns in Iceberg metadata

0 条回复 · 1 位参与者

讨论主要关于在 Iceberg 元数据中声明行级 bbox 覆盖列的机制,以支持行级空间预过滤。Sunmin Lee 提出利用独立 bbox 列进行行级过滤的需求,Tanmay Rauth 则澄清了 Iceberg 原生技术方向是通过几何列自身的统计信息进行剪枝。

@Sunmin Lee: 提出利用显式 bbox 覆盖列进行行级预过滤,以弥补现有文件级分区剪枝的不足,并询问是否有相关历史讨论。

@Tanmay Rauth: 指出 Iceberg v3 的原生方向是利用几何列自身的 Bounds 统计信息进行剪枝,而非依赖辅助列,但目前端到端功能尚未完全就绪。

初步结论是 Iceberg v3 规范倾向于使用几何列原生 Bounds 进行剪枝,但该功能尚在开发中;Sunmin Lee 表示若采用新设计将改用 Field ID 映射,并继续寻求行级过滤方案的指引。

Reduce CI runner time by running JDK 21 only on main/nightly

0 条回复 · 1 位参与者

本次讨论旨在通过仅在主分支和夜间构建中运行 JDK 21 来减少 CI 运行时间。社区成员普遍支持在 PR 阶段移除 JDK 21 测试,相关 PR 已被合并。

@Kevin Liu: 已合并移除 PR 中 JDK 21 测试的代码,确保主分支合并时仍会运行 JDK 17 和 21 以发现潜在问题。

@Russell Spitzer: 赞同关闭 JDK 21 测试以降低成本,认为仅破坏 JDK 21 而不影响 JDK 17 的可能性极低。

@Danny Jones: 建议考虑使用 GitHub Merge Queue 功能,在轻量级测试通过后入队时再运行完整测试。

已决定并实施在 PR 的 CI 矩阵中移除 JDK 21,仅保留 JDK 17,同时保留主分支的完整测试覆盖。

Clarify field `id` handling in REST Spec

0 条回复 · 1 位参与者

讨论旨在澄清 REST 规范中关于字段 `id` 的处理方式,以解决社区对此行为的疑问并确保表状态的一致性。作者通过 PR 提议明确区分 `CreateTableRequest`(重分配 ID)与 `AddSchemaUpdate`(保留 ID)的不同行为。

@Sung Yun: REST 规范需明确服务端如何处理字段 ID,例如 `CreateTableRequest` 会重分配 ID,而 `AddSchemaUpdate` 则保留客户端提供的 ID。

已提交 PR #17137 供社区审查,旨在通过规范澄清帮助不同实现保持表状态的一致性。

Updating Read Restrictions (#13879) to adopt the Expressions Spec + IDReference

0 条回复 · 1 位参与者

讨论旨在解决 PR #13879(读限制)在投票前的结构性缺陷,即当前表达式引用列名而非字段 ID,可能导致策略在列重命名后失效。Nevin 提议在投票前同步更新该 PR,采用已通过的 Expressions Spec 语法并引入 IDReference,以确保策略与字段 ID 绑定。

@Prashant: 指出了 PR #13879 存在的关键缺口:表达式通过名称引用列,导致策略在列重命名或删除时可能失效。

@Ryan: 建议将采用新语法和引入 IDReference 结合进行,避免在已弃用的旧结构上增加新变体,这是更整洁的路径。

@Nevin Zheng: 计划与 Prashant 合作推进这些规范变更,目标是在 7 月 15 日之前提交初步版本供审查。

下一步行动是由 Nevin Zheng 与 Prashant 合作,在 7 月 15 日(或更早)前完成规范更新的初稿并提交审查,随后再进行社区投票。

🎫 JIRA (0)

本周新建 0 个 Issue

本周无新建 JIRA。