Iceberg V4 社区投票周:equality delete 的终局、Flink 转换方案就位;Parquet File 逻辑类型 18:0 通过;Apache 湖仓 IaC 化加速
本期聚焦 Apache 湖仓社区 7月11-18日开发动态:Iceberg V4 规范中 equality delete 面临废弃、Flink 转换方案正式就位消除最后技术障碍;Parquet File 逻辑类型全票通过为多模态 AI 数据集提供原生格式载体;Iceberg 与 Polaris 同时推进 Terraform Provider 标志着湖仓基础设施进入声明式管理时代。
本期聚焦 7 月 11 日至 18 日 Apache 湖仓社区开发列表的密集活动——268 条消息、约 80 个独立线程、2 项格式级投票、5 个候选版本、1 位新 Committer。核心动态三条:Iceberg V4 规范中 equality delete 的废弃讨论正式推进,Flink 的 equality delete → deletion vector 转换方案(ConvertEqualityDeletes)以 6 个 commits 合并完成,消除了废弃 equality delete 的最后一个技术障碍;Parquet File 逻辑类型以 18:0 的压倒性票数通过,为多模态 AI 数据集(图像、音频、文档与表格特征并存)提供原生格式载体;Iceberg 与 Polaris 的 Terraform Provider 同时进入投票阶段,标志着湖仓基础设施从”手工运维”向”声明式管理(IaC)“的集体转型。
Apache Iceberg V4 社区投票周:equality delete 废弃进入 Spec 讨论,Flink 转换方案正式就位
事件概述
2026 年 7 月 11 日至 18 日,Apache Iceberg 开发列表成为整个湖仓社区最活跃的技术讨论场——71 条消息分布在 equality delete 废弃、向量类型支持、排序规则一致性、manifest 条目唯一性、Vortex 文件格式、共享一致性测试 fixtures、完整性验证 action 等十余个线程中。最重磅的线程由 Huaxin Gao 发起:正式在 V4 规范的框架下重启 equality delete 废弃提案,而 Maximilian Michels 同期宣布 Flink 的 equality delete → deletion vector 转换方案(ConvertEqualityDeletes)已通过 6 个 commits 合并完成——这意味着 Russell Spitzer 在 2024 年 10 月首次提出废弃 equality delete 时缺失的”可行替代方案”,现已正式到位。
技术解析
-
equality delete 的技术债务:Iceberg 支持两种删除方式。equality delete(“删除所有 id=42 的行”)写入极快——流式写入器可以在微秒级发出而无需读取任何数据——但将所有读取成本转嫁给 reader:每次查询必须在序列号范围内对所有候选行执行 join 操作。positional delete(“删除文件 X 的第 1,507 行”)+ V3 deletion vectors 则将删除信息压缩为每个数据文件一个 bitmap,reader 只需 O(1) 位置检查。equality delete 还会阻塞 CDC 和行血缘——因为存在 equality delete 时表的真实状态需要全表扫描——并强制物化视图和二级索引的完全重建而非增量维护。参与讨论的 Steven Wu、Manu Zhang、Maximilian Michels、Xin Huang 等贡献者在首日即产生 8 条消息,共识方向明确:V4 是做出这个结构性决定的正确时间窗口。
-
Flink ConvertEqualityDeletes 的工作原理:新功能作为表维护任务
ConvertEqualityDeletes发布,与IcebergSink集成。写入器继续以 equality delete 方式高效产出数据文件和 delete 文件;转换器读取它们,使用 Flink 状态中 RocksDB 支持的主键索引将 delete 解析为 deletion vectors,提交数据文件 + DV 到目标分支。支持两种部署模式:分离分支模式(写入在单独分支上进行,reader 永远看不到 equality delete)和单分支模式(在同一条分支上原地转换)。这为流式写入场景提供了”先用 equality delete 快速写入、后台异步转换为 DV”的完整路径,正是 2024 年时缺少的可行方案。 -
其他 V4/Spec 进展:Yan Yan 发起 first-class vector type support 提案——面向 AI embedding 存储场景,偏好密集数值向量类型如
float[768],与 Parquet 社区的 fixed-size lists 工作并行推进。Andrei Tserakhau 等深入讨论跨引擎字符串排序一致性问题——不同引擎使用不同 ICU 版本导致排序结果不同,在表级别固定 ICU 版本可保证一致性但牺牲升级自由。Russell Spitzer 推动在规范中明确 live manifest entries 必须按文件路径唯一。Neelesh Salian 等提出共享一致性测试 fixtures——创建独立于语言的共享仓库(参考 parquet-testing),PyIceberg、iceberg-rust 和 iceberg-go 已有概念验证。Priyadarshini Mitra 提出ValidateTableIntegrityaction——遍历完整元数据图验证所有引用文件在存储中存在。
行业影响
本周 Iceberg V4 社区活动揭示了一个重要的开源治理模式:大型格式级决策(如废弃一个删除机制)不是由单一厂商在封闭路线图中拍板,而是在公开邮件列表中由多厂商贡献者共同论证、等到可行替代方案就位后才推进。Flink 转换方案在 equality delete 废弃讨论重启的同一周合并完成,不是巧合——社区在”关门前先铺路”。这种”先证明替代方案可行,再讨论废弃旧方案”的节奏,是 Apache Way 治理模式下格式演进的标准操作流程。
从技术趋势看,equality delete 的潜在废弃和 deletion vector 的全面采用,将进一步拉近 Iceberg 与 Delta Lake 在 DML 性能上的距离——Delta Lake 从一开始就以 deletion vector 为主要删除机制。如果 V4 移除 equality delete 的强制支持,Iceberg 的读取路径将显著简化:不再需要处理两种互不兼容的删除文件格式的 join 逻辑。对于湖仓引擎开发者(Trino、StarRocks、Dremio 等),这意味着更简单的 reader 实现和更可预测的查询性能。
相关链接
- Apache Iceberg V4 Spec 演进跟踪(GitHub Issues)
- Apache Data Lakehouse Weekly: July 11 to July 18, 2026(完整周报,含 equality delete 讨论细节)
- Apache Iceberg 开发邮件列表(订阅与归档)
Apache Parquet File 逻辑类型 18:0 全票通过——多模态 AI 数据集获原生格式载体,ALP 编码投票在即
事件概述
2026 年 7 月中旬,Apache Parquet 社区完成了一项里程碑式投票:由 Burak Yavuz 发起的 File 逻辑类型提案以 18 票 +1(含 4 票 binding)全票通过。投票人涵盖 Daniel Weeks、Russell Spitzer、Andrew Lamb、Gang Wu、Fokko Driesprong、Steve Loughran、Gunnar Morling 等跨项目核心贡献者。同时,Prateek Gaur 宣布 ALP(Adaptive Lossless Precision)浮点数据编码已准备就绪进入正式投票阶段——Arrow C++ 解码器可逐位读取 Java 写入数据,约 156 万个值和 18 个测试 fixture 实现零不匹配。Fokko Driesprong 计划下周启动 Parquet 1.18.0 发布流程。
技术解析
-
File 逻辑类型的设计意图:File 逻辑类型允许 Parquet 列携带类似文件的二进制 payload,并附加明确的语义标注(MIME 类型、文件名、大小等元数据)。在多模态 AI 数据集场景中——一张表内同时存在数值特征列、文本嵌入列、原始图像列和音频片段列——File 逻辑类型让查询引擎能够识别”这一列是 JPEG 图像”而非”这一列是未知二进制 blob”,从而实现智能预览、类型感知的谓词下推和跨引擎的工具互操作。这与 Iceberg 社区正在推进的向量类型支持(
float[768])形成互补——前者解决”未结构化数据如何存储在列式格式中”的问题,后者解决”结构化向量如何被类型系统识别”的问题。 -
ALP 编码的工程严谨性:ALP 专为浮点数据(Float32/Float64)设计,通过利用浮点数的精度分布特性实现无损压缩。Prateek Gaur 的测试方法论值得关注:使用 Arrow C++ 解码器逐位验证 Java 编码器产出——156 万个值、18 个 fixture 零不匹配——这种”跨语言逐位验证”远超出典型的单元测试覆盖范围,反映了 Parquet 社区对格式正确性的极高工程标准。对于时序数据库、IoT 传感器数据和科学计算场景,ALP 编码可显著降低浮点列的存储和 I/O 成本。
-
FIXED_SIZE_LIST 加速:Andrew McCormick 分享了 hint-aware reader 的基准测试数据——使用 Dremel 解码完整路径需约 2,600 纳秒/行,而利用 fixed-size 提示跳过 Dremel 组装后仅需约 1,430 纳秒/行,加速约 45%。这一优化对 embedding 向量存储场景至关重要——
float[768]的 fixed-size list 是 embedding 在 Parquet 中的自然表示。 -
格式版本化 RFC 独立推进:Micah Kornfield 将格式版本化变更从主提案中抽成独立 RFC PR,放弃 SemVer 命名改用纯语言描述,建议写入器在格式发布后 6-18 个月内切换到新默认版本。这种渐进式的版本迁移策略反映了 Parquet 作为”最广泛部署的列式格式”的特殊约束——格式变更必须考虑数以万计的生产部署的向后兼容性。
行业影响
Parquet File 逻辑类型的通过,加上 Iceberg 社区的向量类型提案和 Parquet 社区的 ALP 编码即将投票,共同指向一个趋势:列式存储格式正在从”纯表格数据”向”多模态 AI 数据”扩展其语义表达能力。过去,图像、音频等非结构化数据在数据湖中通常以单独的对象存储路径存在,通过 URI 引用关联到表行——这种”外挂”模式割裂了数据治理、事务一致性和查询优化。File 逻辑类型让这些数据成为 Parquet 行中的一等公民,受同一事务保护、享受同一查询引擎的谓词下推。
从更广的视角看,Parquet 1.18.0 的即将启动标志着 Parquet 社区在 2026 年下半年的发布节奏加速。1.17.0(2025 年 10 月)引入了 Variant 类型和 Geo 类型支持,1.18.0 预计将在 File 逻辑类型和 ALP 编码的基础上进一步扩展格式的语义覆盖面。对于 Iceberg V4 和 Delta Lake 5.0 来说,Parquet 的演进直接决定了格式层的能力边界——因为两者都以 Parquet 为默认数据文件格式。
相关链接
Apache 湖仓 IaC 化加速——Iceberg + Polaris Terraform Provider 同时推进,DataFusion/Comet/Arrow 发布列车密集到站
事件概述
2026 年 7 月中旬,Apache 湖仓生态出现了一个值得关注的横向趋势:基础设施即代码(IaC)正在成为湖仓项目的标配。Matt Topol 发起了 Iceberg Terraform Provider v0.1.0 RC0(后升级至 RC1),支持通过 Terraform/OpenTofu 声明式管理 Iceberg 表、命名空间和目录配置;Sung Yun 同期发起了创建 terraform-provider-polaris 仓库的 lazy consensus 提案。与此同时,Apache 湖仓的多个子项目/相关项目在本周密集发布候选版本:DataFusion 54.1.0 RC1、Ballista 54.0.0 RC2(已通过)、Comet 0.17.1 RC1(已通过)、Arrow JS 21.2.0 RC1、Arrow Rust Object Store 0.14.1 RC1——形成了一条跨越查询引擎、分布式计算、Spark 加速和内存格式的”发布列车”。
技术解析
-
Terraform Provider 的双重意义:首先是运维层面——湖仓基础设施(表、命名空间、权限策略、存储配置)的创建和变更可以纳入 GitOps 工作流,享受版本控制、代码审查、CI/CD 自动化和漂移检测。其次是生态层面——Terraform 是跨云基础设施管理的最大公约数,Iceberg 和 Polaris 的 Terraform Provider 使得湖仓资源可以与 AWS S3 桶、GCP BigQuery 数据集、Databricks 工作区等云资源在同一份 Terraform 配置中统一编排。Iceberg Provider RC1 由 Neelesh Salian、Alex Stephen、Sung Yun 等多位贡献者验证,已准备好面向 Terraform 和 OpenTofu 注册表发布。
-
DataFusion/Ballista/Comet 三箭齐发:Matt Butrovich 同时主导 DataFusion 54.1.0 RC1 和 Comet 0.17.1 RC1 两个版本投票,Andy Grove 的 Ballista 54.0.0 RC2 在 RC1 失败后迅速修复并通过。这三个项目形成了一条清晰的 Rust 原生数据处理栈——DataFusion 是 SQL 查询引擎、Ballista 是分布式执行层、Comet 是 Spark 加速插件(刚在 Vol.33 中以 Iceberg 加速场景深度覆盖)。三者在同一周进入发布流程,且版本号对齐到 54.x/0.17.x,体现了 DataFusion 生态的协同发布节奏。
-
Arrow JS 21.2.0 和 Arrow Rust Object Store 0.14.1:Arrow JS 由 Sutou Kouhei 主导,面向前端/Node.js 数据分析场景;Arrow Rust Object Store 由 Andrew Lamb 发起,是 Rust 生态中访问 S3/GCS/Azure Blob 等对象存储的核心抽象层——Iceberg Rust、DataFusion 和 Ballista 都依赖它进行数据文件 I/O。0.14.1 的修复直接影响整个 Rust 数据处理栈的稳定性。
-
新 Committer 诞生:Andrew Lamb 宣布 Adam Gutglick 晋升为 DataFusion Committer——这是 DataFusion 社区持续增长的标志,也是本期”发布列车”背后的社区治理基础。
行业影响
Terraform Provider 的集体推进揭示了一个更深层的趋势:湖仓基础设施正在从”运维脚本 + Web 控制台”时代进入”声明式配置 + GitOps”时代。这与 2023-2025 年 Kubernetes 生态中 Operator Pattern 的普及路径高度相似——先是手工 kubectl apply,然后是 Helm Chart,最后是 Terraform/Crossplane 的声明式管理。湖仓当前正处于从”手工创建表”到”Terraform 管理表”的转型起点。
DataFusion 生态的密集发布则指向另一个方向:Rust 在数据基础设施中的渗透正在从”单点组件”走向”全栈替代”。DataFusion(SQL 查询引擎)+ Ballista(分布式执行)+ Comet(Spark 兼容加速)+ Arrow Rust(内存格式 + 对象存储访问)已经构成了一条从 SQL 解析到分布式执行到持久化 I/O 的完整 Rust 数据处理栈。这套栈目前仍处于 Spark 的”补充和加速层”地位(如 Comet 保留 Spark 的查询规划,仅替换物理执行),但如果 Ballista 的分布式能力持续成熟,未来可能出现独立于 JVM 的纯 Rust 数据处理平台。
相关链接
- Apache Iceberg Terraform Provider(GitHub)
- Apache Polaris Releases(1.6.0 于 7 月 8 日发布)
- Apache DataFusion Comet 0.17.1 RC1
- Apache Arrow Rust Object Store
编者评
本期是 datainfra 前沿动态创刊以来首次以”开发列表活动”而非”产品/版本发布”为主角的期刊。这并非因为 7 月中旬缺乏产品发布——事实上有 Polaris 1.6.0(7 月 8 日)和 Spark 3.5.9(7 月 16 日)等版本释出——而是因为 Iceberg V4 的规范演进正在进入一个”决定格式未来数年走向”的关键窗口期。equality delete 的废弃讨论、File 逻辑类型的全票通过、ALP 编码的投票在即、向量类型的首次提案——这些不是”某个版本的新功能”,而是”格式的设计哲学在社区公开辩论中逐渐成型”。
这种”开发透明性”正是 Apache Way 的核心价值:即使你没有投票权,你可以在提案阶段看到为什么某个设计被选择、为什么某个旧机制被废弃、替代方案是什么。对于正在规划 2026-2027 年数据架构的团队来说,Iceberg V4 的开发列表不是噪音——是最准确的技术路线图,比任何厂商的 keynote 都更早揭示方向。如果 V4 按当前节奏在 2026 年底或 2027 年初发布,那么今天开发列表上的每一个”VOTE”线程都是未来生产环境的默认行为。