💬 讨论 (10)
4 条回复 · 4 位参与者
讨论主要围绕模式演进期间字段 ID 绑定策略的“写入路径缺口”问题,即新列在提交后到策略绑定前存在未受保护的时间窗口。议题进一步延伸至 REST 规范是否应标准化深入目录领域的写入端 API,社区正在评估是制定统一框架还是将其留作目录实现细节。
@Andrei Tserakhau: 指出这是规范尚未覆盖的元模式问题,倾向于通过“能力协商”而非强制标准化来解决目录领域的写入端 API。
@Sung Yun: 强调当前流程存在安全风险(Drift 和 Creation 问题),询问社区是否接受此限制或支持在同一事务中实现列创建与策略绑定。
@Prashant Singh & Yufei Gu: 认为这主要是目录实现层面的关注点,规范无需强制要求,现有设计已将此留作目录的选择。
初步倾向于将其视为目录能力或实现选择而非规范强制要求;Sung 将在即将召开的 Catalog 社区同步会议上进一步讨论该问题及更广泛的元模式议题。
3 条回复 · 3 位参与者
Neelesh Salian 提议在 Iceberg 1.12 版本中引入 Java 17 的 switch 表达式和 instanceof 模式匹配,范围限定于 iceberg-core 模块。讨论中大家一致认可该改进,但建议将 switch 和 instanceof 的变更拆分为两个独立的 PR 以便于审查和维护。
@Neelesh Salian: 提议在 1.12 版本中引入 switch 表达式和 instanceof 模式匹配,暂不涉及文本块等其他 Java 17 特性。
@Eduard Tudenhöfner: 支持引入新 switch 表达式以提升代码可读性,但建议将 instanceof 相关修改放在单独的 PR 中。
@Kevin Liu: 支持拆分 PR 的做法,认为这样更有利于代码审查和 rebase 操作。
Neelesh 接受了拆分 PR 的建议,将分别提交代码并邀请相关人员进行审查。
3 条回复 · 3 位参与者
讨论主要围绕如何为涉及多个 Iceberg 表的查询实现全局快照一致性。Xiening Dai 提议引入 LoadTables API 和 CSN 机制以解决当前规范缺乏跨表一致性的问题,讨论深入探讨了目录作为事实来源的可行性、联邦环境下的局限性以及对事务存储后端的要求。
@Xiening Dai: 提议 LoadTables API 以实现跨多表原子化读取元数据;认为目录已是事实来源,建议将事务边界限制在命名空间内。
@Andrei Tserakhau: 强调一致性依赖于目录作为唯一事实来源;指出在联邦/分片目录架构下单一读取操作无法保证一致性;指出该功能依赖目录具备原子多表操作能力。
@Maninder Parmar: 指出 CSN 提案与 LoadTables 思路一致,且 CSN 仅存于 TableMetadata 中,无需重写存储层工件。
议题已被接纳加入社区同步会议,将在会议中进一步讨论技术细节和边界定义。
3 条回复 · 3 位参与者
社区讨论了如何优化 GitHub Actions CI 资源消耗,提出了仅针对变更版本运行 CI 和修复重复构建等具体方案。Kevin Liu 指出当前资源使用仍在 ASF 限额内,但 Java 仓库占比最高,建议在优化时优先保证正确性、覆盖率和可维护性。
@Manu Zhang: 建议仅针对变更的 Spark 版本运行 CI 以节省资源,并计划推广至 Flink CI。
@Ajantha Bhat: 指出相关优化已在之前的 PR 中涵盖,愿意拆分 PR 以加速审核和合并。
@Kevin Liu: 强调 CI 应默认运行以保障覆盖率,避免需要手动维护的模式,并确认 Java 仓库是资源消耗大户。
确认当前资源使用未超标,下一步将拆分并合并现有的优化 PR,同时继续寻找易于实现的优化点。
2 条回复 · 2 位参与者
Kevin Liu 提议澄清 Iceberg 模式 JSON 类型字符串序列化规范,以解决 Rust 与 Java/Python 实现在 decimal 类型空格处理上的歧义。讨论涉及两个 PR,旨在明确写入者的标准输出格式,并要求读取者兼容非标准格式以保持向后兼容。
@Kevin Liu: 提议规范应明确写入者输出带空格的标准格式(如 decimal(P, S)),并建议读取者“should”接受可选空格而非强制要求,以平衡规范性与兼容性。
@Sung Yun: 支持使用“SHOULD”措辞,并指出 PyIceberg 目前解析较严格,已提交 PR 修正以使其与其他语言库保持一致。
Geography 类型的 PR (#16799) 已合并;Decimal 类型的 PR (#16798) 正在等待更多反馈,已获得对“SHOULD”措辞的支持。
1 条回复 · 2 位参与者
社区讨论了发布 1.10.3 和 1.11.1 补丁版本的议题,成员一致支持发布以修复多项正确性问题。讨论中确认了 1.11.x 分支已创建,并计划纳入关于加密元数据保留、默认值处理及清单文件大小修复的 PR。
@Amogh Jahagirdar: 主导补丁发布流程,创建了 1.10.3 里程碑,并建议纳入修复默认值处理和加密元数据保留的关键 PR。
@Matt Butrovich: 提议将修复表重写后清单删除文件大小的 PR (#15470) 回溯至 1.10.x 和 1.11.x 版本。
@Manu Zhang: 支持补丁发布,确认了分支创建状态,其提交的修复加密元数据问题的 PR 已被纳入发布计划。
社区已同意发布补丁版本,下一步将继续审核并完成相关 PR 的回溯合并工作。
0 条回复 · 1 位参与者
Junwang Zhao 指出 Iceberg 规范与实现之间关于 identity transform 有效源类型存在不一致:规范暗示允许复杂类型,但 Java/Go 等实现仅接受原始类型。他提议修改规范措辞以明确限制为原始类型,从而与现有实现对齐。
@Junwang Zhao: 现有规范允许除 geometry 等外的“任何类型”,但 Java 和 Go 实现实际上拒绝 structs/lists/maps,仅接受原始类型。
@Junwang Zhao: 建议将规范更新为“Any primitive type except for geometry and geography”,以准确反映实现意图。
已提交 PR (#16836) 以更新规范文档,明确限制源类型为原始类型。
0 条回复 · 1 位参与者
本次讨论旨在将“列更新文件表示”与元数据表示议题分离,重点明确了数据表示层面的实现细节。核心进展是确定规范不会强制要求 dense 或 sparse 等具体写入实现,而是将其留给各引擎自行决定,仅需保证写入明确的 *_pos 列。此外,参与者还探讨了 DV-only 场景下的序列号处理问题。
@Anurag Mantripragada: 规范不强制规定内部实现细节(如 dense/sparse),由引擎自行选择,前提是写入明确的 *_pos 列。
@Xiening Dai: 针对 DV-only 场景提出了序列号处理的多种选项,建议将其细节写入规范变更提案并审查读写流程。
@Gábor Kaszab: 确认更新基础文件级序列号是解决 eq-delete 重写问题的关键。
已确定数据表示的实现细节交由引擎决定;下一步建议将 DV-only 场景的序列号处理细节整理成规范变更提案进行详细审查。
0 条回复 · 1 位参与者
Alex Stephen 宣布 Iceberg Terraform Provider 开发进展顺利,已新增管理 Namespaces 和 Tables 的功能,并获得了 Polaris 社区贡献的 Polaris Principals 支持。若无异议,项目计划于下周进行发布。
@Alex Stephen: 项目已增加对管理 Namespaces 和 Tables 的支持,Polaris 社区贡献了 Polaris Principals 支持。
@Alex Stephen: 若无反对意见,计划在下周发布该 Provider。
若无异议,将于下周发布 Iceberg Terraform Provider。
0 条回复 · 1 位参与者
社区讨论了在 Spark 发布加速背景下的版本支持策略。大家普遍同意采用“上一个 LTS + 2 个最新小版本”的支持范围,并优先合并 Spark 4.2 支持以解锁后续开发,随后再投票移除 Spark 4.0。
@Anton Okolnychyi: 因依赖 Spark 内部机制,需保留每版本模块;支持“LTS + 2 个小版本”策略,并同意引入 4.2 后弃用 4.0。
@Cheng Pan: 建议先合并 Spark 4.2 连接器代码以解除开发阻碍,之后再讨论移除 4.0。
@Anurag Mantripragada: 同意先合并 4.2 支持,并计划在社区同步后发起移除 Spark 4.0 的投票。
初步结论是先合并 Spark 4.2 支持。下一步行动是 Anurag 将在社区同步后发起移除 Spark 4.0 支持的投票。