Amazon 收购 DuckLabs,DuckDB 归入 AWS 但保持 MIT 协议与独立基金会治理;Ray Data 用 Shuffle V2 把 shuffle 中间态从 actor 堆内存搬进 object store,TPC-H SF1000 q21 提速 53 倍;Delta Lake 4.4.0 与 AWS Glue 6.0 同时落地 VARIANT、地理空间与纳秒类型,开放表格式的类型系统开始收敛;Hologres V4.2.0 用 Liquid Table 让 shard 数从建表时的一锤定音变成可在线流动的配置
本期聚焦四条 DataInfra 动态:Amazon 于 8 月 26 日宣布签署最终协议收购 DuckDB 背后的阿姆斯特丹公司 DuckLabs,创始团队留任、项目继续以 MIT 协议在独立基金会下开源,AWS 同时披露 Amazon Quick 已用 DuckDB 处理超 25 亿次查询并将平均延迟降低 30%;Anyscale 在 8 月 25 日连发多篇文章,其中 Ray Data 的两项重构最值得关注——与 NVIDIA cuDF 团队合作的 GPU-Native Operators 让模糊去重流水线在 FineWeb 10BT 上取得 4 倍加速与 3.1 倍 TCO 改善,Shuffle V2 则把 shuffle 中间结果从长期存活 aggregator 的堆内存搬进 Ray object store,换来可溢写、可 lineage 重建、无资源长期预留的容错模型,TPC-H SF1000 上 q21 从 6300 秒压缩到 119 秒;开放表格式的类型系统出现罕见同步——Delta Lake 4.4.0(8 月 20 日)支持 Spark 4.2、SQL DDL 标识列与 Unity Catalog 表的生成列,AWS Glue 6.0(8 月 27 日)则在同一张 Iceberg v3 表里同时落地 GEOMETRY/GEOGRAPHY、TIMESTAMP_NTZ(9)、带自动 shredding 的 VARIANT 与 DEFAULT 列值;阿里云 Hologres V4.2.0 把 QE V2 执行引擎铺开到 Nested Loop Join、Lookup Join、SQE 外表直读等场景,并用 Liquid Table 将 reshard 从重建表的线性耗时操作变成秒级元数据切换。
本期追踪到四条 DataInfra 动态,横跨 8 月 18 日至 8 月 27 日,落点分别在产业格局、执行引擎、表格式与实时数仓四个层面,但它们共享同一条主线:数据基础设施正在同时完成一次「形态下沉」和一次「类型上浮」——引擎形态从”必须是一套远程集群”下沉为”可以是进程内的一个库”,而表格式的能力则从”只管 schema 和文件”上浮到”原生理解半结构化、时空与高精度时间”。Amazon 收购 DuckLabs 是这条主线最直白的注脚:Andy Warfield 在 All Things Distributed 上用一整篇文章论证单机硬件(m8g.48xlarge 相比 19 年前的 m1.xlarge 拥有约 50 倍的内存、核心与网络带宽)已经吞掉了当年催生 MapReduce 与 Spark 的物理约束,而 Agent 的交互模式——先小规模试探、再逐步收敛——恰好与 DuckDB 的”TB 级以下日常查询”设计前提高度重合。同周,Anyscale 把 Ray Data 的 shuffle 从”长期存活 aggregator 的堆内存”重构为”object store 中的普通 Ray object”,用一次架构决策同时换掉内存上限、不可重建状态与资源长期预留三块天花板。而真正值得放在一起看的是第三条:Delta Lake 4.4.0 与 AWS Glue 6.0 上的 Iceberg v3 在相隔一周内分别补齐了标识列/生成列与地理空间/纳秒/VARIANT/DEFAULT,两条独立的开放表格式路线首次在同一组数据类型上汇合。第四条里,Hologres V4.2.0 用 Liquid Table 把”改 shard 数”从随数据量线性增长的重建操作变成秒级元数据切换——这恰恰是对同一个问题的另一种回答:当物理约束松动,剩下的瓶颈就都是那些”建表时就得一锤定音”的静态决策。
Amazon 收购 DuckLabs:DuckDB 归入 AWS,但保持 MIT 协议与独立基金会治理
事件概述
2026 年 8 月 26 日,AWS 数据服务副总裁 Mai-Lan Tomsen Bukovec 在 AWS Big Data Blog 宣布:Amazon 已签署最终协议,收购总部位于阿姆斯特丹的 DuckLabs——开源分析型数据库 DuckDB 背后的公司。交易预计在 customary closing conditions 满足后很快完成。
公告中最关键的三条承诺是:Hannes Mühleisen 与 Mark Raasveldt 两位创始人将继续领导团队并主导开源项目的技术方向;DuckDB 项目继续由 DuckLabs 团队驱动、继续开源;继续由独立的非营利基金会(the Foundation)监督,并维持当前的 MIT 许可证。DuckDB 两位创始人最初在荷兰国家数学与计算机科学研究中心(CWI,也是 Python 的诞生地)开始该项目。
AWS 给出的战略叙事相当清晰:过去 20 年 AWS 的数据布局是从 S3 数据湖、EMR、Redshift 一路铺到 Athena、Glue、S3 Tables、S3 Vectors 与 Graviton 版 Redshift,覆盖的是”数百 TB 到 PB 级”;而 DuckDB 占据的是另一头——全球 90% 以上的数据查询量在 1 TB 以下。AWS 的表述是,要把”DuckDB 在 1TB 及以下日常查询上的超能力”与”S3 与 Redshift、Athena、EMR、Glue-ETL、SageMaker 的 EB 级企业级规模”组合起来。
值得注意的是,AWS 内部早就在用 DuckDB。公告披露:Amazon Quick 在 2025 年 10 月上线时,为了让自研 dashboarding 引擎提速,选择了 DuckDB 查询 S3 Tables 中的数据;截至公告时,Quick 已用这套含 DuckDB 集成与优化的自研查询引擎处理了超过 25 亿次查询,DuckDB 的集成与优化帮助 Quick 把平均查询延迟降低了 30%。外部客户案例方面,Allen Institute 科学计算执行总监 David Feng 表示,该机构自 2025 年起用 DuckDB 分析 TB 级科学数据,在 S3 上对神经生理与行为数据做实时质控与分析,“原本需要数分钟的查询现在不到一秒返回”。
技术解析
- 为什么是现在——“物理条件变了”:同日 Werner Vogels 的 All Things Distributed 刊出 AWS 杰出工程师 Andy Warfield 的长文《DuckDB and the Changing Physics of Analytics》,给出了这笔收购的技术论证。核心论据是硬件与数据规模的剪刀差:19 年前 AWS 最强的 m1.xlarge 有 15 GB 内存、4 个虚拟核、约 1 Gb/s 网络;今天一台 m8g.48xlarge 拥有约 50 倍的内存、50 倍的核心、50 倍的网络带宽——单机的并行度与聚合 I/O 带宽已经超过很多人当年跑 Hadoop 和 Spark 的整个集群。而数据量的增长服从分布:最大数据集指数级膨胀,但那是尾部;多数数据集随”业务规模、客户数、一个人一天的银行交易笔数”这类人类尺度线性增长。
- “库”这种形态的真正含义:Warfield 强调,DuckDB 以嵌入式库的形式存在并不意味着它必须待在客户端进程里,而是意味着它不必是一个位于线缆另一端的外部服务——于是同一个高效代码基可以被放置在软件栈的合适位置:应用进程内、Lambda 函数里、服务端引擎代码中,甚至编译成 WebAssembly 完整跑在浏览器标签页里(shell.duckdb.org)。他把 DuckDB 称为“结构化数据的 glibc”:一个精简、不起眼、无处不在、大量软件链接它但几乎没人需要想起它的依赖。
- 为什么和 Agent 天然契合:AWS 博客给出的观察是,Agent 操作数据的方式很像人——它们会戳一戳、做实验、在小数据集上跑探索性分析,然后才决定真正要做什么。而 DuckDB 的向量化执行不需要重型编译器即可运行
SELECT * FROM table这类简单语句,其”让日常 SQL 查询极快”的架构前提天然适配这种交互模式。 - 治理边界:公告明确划出了三条不变——MIT 许可不变、独立基金会监督不变、DuckLabs 团队继续驱动项目。这与 Elastic、MongoDB、Redis 等公司改协议的历史形成对照,也说明 AWS 买的是团队与深度集成能力,而非闭源权利。
行业影响
这笔交易把”嵌入式分析引擎”从工具层的热门选择,直接抬升为云厂商数据栈的一等公民。对从业者有三点直接影响:其一,DuckDB 进入 AWS 服务的路径会显著变短——公告已明确表示将”继续投资 DuckDB 与 S3、Redshift、Athena、EMR、Glue-ETL、SageMaker 的深度集成”,Quick 之外,Athena 与 Glue 是最合理的下一站。其二,“该不该为这个查询起一个集群”会成为一条被重新审视的默认假设——当单机的网络与内存带宽已经超过当年集群,很多定时跑的中小规模 Spark 作业在成本上会开始说不通。其三,对 Snowflake、Databricks 与 ClickHouse 等以”服务端集群”形态为主的玩家,这是一个关于查询入口位置的竞争信号:如果分析的第一入口越来越是 Agent 和本地/边缘进程,那么延迟预算的构成就会改变。
需要保持观察的是治理的实际走向。MIT 协议 + 独立基金会的组合在短期内是强约束,但基金会与 AWS 之间的资源依赖是否会在 2-3 年后改变路线图优先级,是这笔交易真正的长期风险点。
相关链接
- AWS and DuckLabs: Building the future of analytics together(AWS Big Data Blog, 2026-08-26)
- DuckDB and the changing physics of analytics(Andy Warfield / All Things Distributed, 2026-08-26)
- DuckLabs to join AWS(DuckLabs 官方公告, 2026-08-26)
- Amazon 官方新闻稿:AWS 与 DuckLabs
Ray Data 双引擎重构:Shuffle V2 把中间态搬进 object store,GPU-Native Operators 拿下 3.1 倍 TCO
事件概述
2026 年 8 月 25 日,Anyscale 集中发布了一批 Ray 生态文章(与 Ray Summit 同期),其中两篇构成 Ray Data 的一次实质性双引擎重构,均随 Ray 2.58 交付。
Shuffle V2(You-Cheng Lin、Yuanzhuo Yang)针对的是一个老痛点:shuffle 是 Ray Data 中无法流式处理的操作——groupby、join、按 key repartition 都必须把相同 key 的行聚到一起,因此它是流水线 OOM 和失败的主要来源。V1 的做法是维护一组长期存活的 aggregator actor,map task 把 shard 提交给对应 partition 的 aggregator,由其在堆内存中持有 shards 直到 shuffle 结束。原文对这一设计的评价很直接:“a job that ran fine at 100 GB falls over at 1 TB”。V2 的核心决策只有一句话——shuffle 中间结果不再累积在 aggregator 的堆内存里,而是作为普通 Ray object 物化进 object store。
GPU-Native Operators(Richard Liaw、Felix Cheung、Lee Yang)则是 Ray Data 与 NVIDIA cuDF 团队合作的产物,补齐了两块此前只能靠用户 UDF 自行调用的 GPU 能力:cuDF 作为 map_batches 的一等 batch format,以及基于 RapidsMPF 的 GPU 原生 shuffle。
技术解析
Shuffle V2:一次架构决策换掉四块天花板
- 可溢写(Spilling replaces the memory ceiling):shards 变成 object store 里的对象,内存压力大时会 spill 到磁盘,shuffle 中间结果不再被 RAM 封顶。
- 可重建(Leveraging Ray Core’s lineage reconstruction):V1 中一个 partition 只存在于累积它的 actor 内部,丢失一个 aggregator 就丢失它拥有的所有 partition 且不可恢复;V2 中丢失的 shard 可以通过重新执行产出它的 map task 来重建,原文结论是”losing any individual shard will not cause the entire job to fail”。
- 不再预先固定资源(Reducer memory comes from measurement):V1 的 aggregator 池大小来自对最初几个 input bundle 的采样,且 shuffle 开始后无法 resize;V2 中 map 和 reduce 都是普通 Ray task,按集群剩余资源调度,reducer 内存直接测量 partition shards 的实际大小。同时消除了”整个 shuffle 期间一直占用
num_aggregators × num_cpus预留”的问题。 - V2 解锁的三项优化:输入合并(block 缓冲到
shuffle_input_batch_bytes默认 1 GiB 后合并成单个 map task,按 node 做 key 避免额外传输)、中间 shard 压缩(Arrow IPC buffer,默认zstd,可选lz4/none)、跨 shuffle 边界融合(reduce 下游紧邻的 map 被折叠进 reduce task,一次物化消失)、以及向量化聚合(把整个 block 交给 Arrow 原生 group-by,而非在 Python 中按 group 循环;已向量化 Count/Sum/Min/Max/Mean/MissingValuePercentage/ZeroPercentage/Unique/CountDistinct 共 9 种)。
性能数字(Ray Data release test suite,TPC-H SF1000,1 × m5.2xlarge head + 32 × m5.4xlarge worker,Ray 2.58):
- TPC-H q21:V1 6300 秒 → V2 仅架构改动(关闭向量化)2400 秒 → V2 完整(开启向量化)119 秒,端到端 53 倍;向量化聚合在
aggregate_groups测试中单项带来超过 30 倍提升。 - Joins:V1 因 aggregator 池在整个 shuffle 期间持有 CPU 预留、map 阶段只能竞争剩余资源而直接超时;V2 下四种 join 类型全部在约 320 秒内完成。
- 压缩基准:对比无压缩,
zstd(默认)减少溢写字节 91%、运行时间 26%;lz4减少溢写字节 68%、运行时间 21%。选型建议是 IO-bound 用zstd、CPU-bound 用lz4、数据已压缩用none。 - 一个诚实的反面数据:在只启用架构、关闭向量化时,
q1、q13、q15反而比 V1 更慢(如 361s vs 240s、372s vs 272s),原因是上游 filter/projection 让实际参与 shuffle 的数据很小,V2 的 encode + object-store 往返开销超过了架构节省。开启向量化后,V2 在所有查询上都击败 V1。
启用方式(Ray 2.58+):
from ray.data.context import DataContext, ShuffleStrategy
DataContext.get_current().shuffle_strategy = ShuffleStrategy.HASH_SHUFFLE_V2
即将到来的 Ray 2.59 会将其重命名为 SHUFFLE_V2(因不再局限于 hash 分区),HASH_SHUFFLE_V2 保留为别名。路线图还包括:sort() 与 random_shuffle() 迁移到 V2;依赖 Arrow 26.0.0 的增量 join(从一侧建 hash table、另一侧分批流式通过,把内存占用限制为 build side + 一个 batch);以及磁盘 shuffle(Ray 2.59 目标)——map 输出直接写本地磁盘、每个 mapper 一个文件按 offset 索引,把 driver 需跟踪的对象数从 map_tasks × partitions 坍缩为每个 mapper 一个 handle,并通过每节点的 Arrow Flight server 按 byte range 批量读取。
GPU-Native Operators:cuDF batch format + RapidsMPF shuffle
map_batches新增batch_format="cudf",UDF 直接拿到cudf.DataFrame而非 pandas DataFrame 或 Arrow table,省去用户手工做数据格式转换。此前 Ray Data 只有 Pandas、Numpy、PyArrow 三种原生 batch format。- GPU shuffle 基于 RapidsMPF,ranks 之间经 UCXX 直接通信,shuffled 数据走 RDMA 或 NVLink 等高性能传输,跳过 CPU 与 Ray object store。
- 基准(FineWeb 10BT 数据集上的模糊去重流水线,2–8 节点;CPU 用 m8id.4xlarge @ $1.04416/小时,GPU 用 g6.4xlarge @ $1.3232/小时):
- MinHash 签名生成阶段(计算密集):15.2×–15.7× 加速(2 节点 1899s → 125s;8 节点 519s → 33s)。
- 分组阶段(shuffle 密集):3.0×(2 节点)/ 2.4×(4 节点)/ 1.5×(8 节点)——原文坦率指出,由于 shuffle 开销随 GPU 数量增长,该数据集下 2 个 GPU 是最优点,8 GPU 时数据集太小无法吃满。
- 端到端:2 节点 3718s → 939s(4.0×),成本 0.69,TCO 改善 3.1×;4 节点 TCO 改善 2.9×;8 节点 2.2×。
GPU shuffle 目前为实验特性。后续方向是 cuDF 与 RapidsMPF 之间的算子融合(避免阶段间无谓的 host-to-device 往返,让数据留在 GPU 内存中),以及让基于 preprocessor API 的特征工程流水线也能走 GPU 路径。
行业影响
这两项工作共同标记了 Ray Data 的一个定位转向:它不再只是”能调度 GPU 的数据加载器”,而是开始在系统层面原生理解 GPU 的内存层次与通信拓扑。Shuffle V2 的价值尤其超出 Ray 生态本身——它示范了一个通用模式:把中间状态从”活在计算进程里”搬到”活在可被调度器感知、可溢写、可重建的存储层里”,是把分布式数据处理的容错模型从”整体重试”降级为”局部重建”的关键一步。这与 Spark 的 shuffle service 外置化、Flink 的算子状态托管化是同一条思路的延续。
对做基础模型数据管线的团队,GPU-Native Operators 给出的信号更直接:数据策管(curation)阶段的去重、聚合正在从 CPU 集群迁移到 GPU 集群,而且 TCO 的改善幅度(3.1×)大于速度的改善幅度(4.0× 中扣掉硬件单价差),说明 GPU 在这类 shuffle + hash 密集负载上的性价比窗口已经打开。不过原文给出的边际收益递减(8 节点时只剩 1.5×)也提醒我们:GPU shuffle 不是”越多越好”,存在随通信开销上升的最优规模点,这是工程落地时需要实测的。
相关链接
- Shuffle V2 in Ray Data: Faster, Fault-Tolerant Joins and Aggregations(Anyscale, 2026-08-25)
- GPU-Native Operators in Ray Data(Anyscale, 2026-08-25)
- Introducing KubeRay v1.6 and v1.7(Anyscale, 2026-08-25)
- Introducing Ray History Server: Post-Mortem Observability for Ray on Kubernetes(Anyscale, 2026-08-25)
- RapidsMPF 官方文档
- 模糊去重基准实验代码(ray-project/gpu-deduplication)
开放表格式的类型系统开始收敛:Delta Lake 4.4.0 与 AWS Glue 6.0 上的 Iceberg v3
事件概述
8 月下旬出现了一次罕见的跨路线同步:Delta Lake 4.4.0(8 月 20 日发布)与 AWS Glue 6.0 对 Apache Iceberg v3 的支持(8 月 27 日博客)在相隔一周内,分别把开放表格式的类型系统向前推进了一大步,且推进的方向高度重合。
Delta Lake 4.4.0 的核心是把 Delta 全面对齐到 Spark 4.2 时代并向 Unity Catalog 进一步靠拢:Delta Spark、Delta Connect 与 Delta Sharing 支持 Apache Spark 4.2.0(同时继续支持 4.1.0 与 4.0.1,仅发 Scala 2.13 构件);CREATE TABLE 支持 SQL DDL 中的标识列(GENERATED ALWAYS AS IDENTITY 与 GENERATED BY DEFAULT AS IDENTITY,可自定义起始值与步长);通过 Unity Catalog 创建的表支持生成列(建表时保留生成列表达式,写入时用声明的表达式计算或校验生成值);Delta Kernel 与实验性 Flink connector 可使用 UC Delta API 管理 catalog-managed 表;Delta Flink 实验性 connector 支持 Flink 2.0.2、2.1.3、2.2.1、2.3.0。此外还有更安全的并发写入(避免重复活动文件或丢失的 deletion-vector 更新)、减少对象存储 HEAD 请求、UniForm 支持原子化表初始化与改进的 Iceberg 转换正确性等。
AWS Glue 6.0(由 Apache Spark 4.1 驱动)则在一张 Iceberg v3 表里同时落地了四类新能力:原生地理空间类型 GEOMETRY(4326) / GEOGRAPHY(4326)、纳秒精度时间戳 TIMESTAMP_NTZ(9)、带自动 shredding 的 VARIANT 类型、以及 DEFAULT 列值。AWS 用”连接车辆车队监控”的示例管线把四者串在了一起。
技术解析
AWS Glue 6.0 上的 Iceberg v3 四类能力
- 地理空间:
GEOMETRY(4326)使用平面模型,GEOGRAPHY(4326)使用球面/大地模型,SRID 4326 对应 WGS 84。GPS 坐标可以存为原生空间对象而非拆成latitude/longitude两个 DOUBLE 列,并直接用ST_Intersects等空间谓词查询,无需外部空间库、无需关联单独的几何表。插入侧使用ST_SetSrid(ST_GeomFromWKB(X'...'), 4326)。注意:该类型是唯一需要额外 Spark 配置的一项——spark.sql.geospatial.enabled=true;纳秒时间戳、VARIANT、DEFAULT 值均开箱即用。另外,Glue 6.0 可读写GEOGRAPHY,但基于GEOGRAPHY的大地空间谓词目前取决于具体引擎。 - 纳秒精度:
TIMESTAMP_NTZ(9)中(9)表示保留 9 位小数。示例给了两条相差仅 1 纳秒的事件(.123456789与.123456790)——在标准微秒精度下两者都会变成.123456,相对顺序未定义;纳秒精度下可被正确区分与排序。这对车队规模下”大量事件落在同一微秒窗口”的去重与定序是刚需,也适用于交易、传感器融合、自动驾驶等亚微秒精度场景。 - VARIANT + 自动 shredding:不同车辆类型上报完全不同的 JSON 模式(Van 报
fuel_pct/engine.rpm/route.eta_minutes,Robot 报battery_pct/obstacle_distance_m/cameras.front,Bike 报踏频心率),全部落在同一列中,不需要 schema union、不需要拆表、不需要展平。查询侧用variant_get(列名, '$.路径', '返回类型')做任意深度的类型化提取,缺失路径返回 NULL。示例里一条 SQL 同时完成了按vehicle_type用CASE取能量指标、跨两层嵌套取$.engine.temp_c、以及进入完全不同的结构取$.deliveries.completed。 - DEFAULT 列值:写入端省略字段时自动填充声明的默认值(
vehicle_type STRING DEFAULT 'UNKNOWN'、speed_kmh DOUBLE DEFAULT 0.0、region STRING DEFAULT 'EMEA')。这对多个生产者写入同一张表、但并非所有生产者都填充每一列的场景价值最大,避免了默认值逻辑在各写入端重复实现。 - 配套的表属性:所有能力都要求
'format-version' = '3';示例还用了'write.delete.mode' = 'merge-on-read',借助基于 Roaring Bitmaps 的 deletion vectors 实现快速行级更正,而不是不断累积 positional delete files。 - 参考架构是冷热双路径:热路径由 Spark Real-Time Mode(RTM) 作业从 Amazon MSK 读取遥测、用空间谓词评估地理围栏违规,在毫秒级把告警路由到下游 Kafka topic;冷路径由微批作业读同一 topic,以秒级延迟写入 Iceberg v3 表并完成 GEOMETRY / TIMESTAMP_NTZ(9) / VARIANT 转换与 DEFAULT 应用;批处理层直接用 Glue 作业读该表做分析。
Delta Lake 4.4.0 的另一个方向:把”表该长什么样”的声明权交给 SQL 与 Catalog
如果说 Glue 6.0 / Iceberg v3 这一侧的重点是类型表达能力,Delta 4.4.0 的重点则是把企业级表语义下沉到 SQL DDL 与 Catalog 层:标识列让” surrogate key 由谁生成”从 ETL 代码回到建表语句;生成列在 UC 托管表上被保留与校验,意味着派生值的不变量由 Catalog 与引擎共同保证,而不是靠写入端自觉遵守;而 UC Delta API 从 Spark 侧(4.3.0 引入、默认启用)进一步扩展到 Kernel 与 Flink connector,说明 Delta 正在把”catalog-managed 表”确立为跨引擎的默认形态。
行业影响
这两条路线在一周内的并行推进,指向开放表格式竞争的下一阶段:决胜点正在从”谁的文件布局与提交协议更优”转向”谁能原生表达业务数据的形状”。过去十年,表格式行业的三个共识(schema evolution、隐藏分区、时间旅行)已经解决的都是”数据与元数据的组织问题”;而 VARIANT、地理空间、纳秒时间戳、DEFAULT 值、标识列、生成列解决的是另一个层次的问题——让表格式直接承载业务语义,从而消灭表外的一层预处理代码。
一个值得注意的收敛信号是 VARIANT 已同时出现在三条路线上:Iceberg v3 的 VARIANT 类型(Iceberg 官方博客 8 月 12 日专门发文解释,Parquet 已定义其二进制编码,Iceberg 在其之上增加了 schema、文件、快照与统计层面的约定,shredding 目前仅在 Parquet 可用)、Delta Kernel 在 4.2.0 中让 Variant 类型 GA 并在 4.4.0 中继续增强、以及 DuckDB v2.0 把 VARIANT 作为一等公民。当 Spark、Flink、DuckDB、Trino 都能用同一套 variant_get 语义读同一份 Parquet,“半结构化数据进湖仓”就不再需要为每个来源建一套展平管线。
需要提醒的落地约束有两条:一是 Iceberg v3 的类型是引擎能力而非纯格式能力——GEOGRAPHY 的空间谓词目前仍取决于具体引擎,跨引擎可移植性需要实测;二是 Delta UniForm 的兼容性存在版本错位:delta-iceberg_2.13 仅支持 Spark 4.1,不与 Spark 4.2 兼容,而 Delta Spark 主体已经支持 4.2——在规划升级时序时需要把 UniForm 单独考虑。
相关链接
- Build with geospatial and variant types in Iceberg v3 on AWS Glue 6.0(AWS Big Data Blog, 2026-08-27)
- Semi-Structured Data in Apache Iceberg: Meet the Variant Type(Iceberg 官方博客, 2026-08-12)
- Delta Lake 4.4.0 Release Notes(GitHub)
- 示例 CloudFormation 模板:glue6-iceberg-v3-data-types
- Razor Group’s journey to a modern data lakehouse on AWS(AWS Big Data Blog, 2026-08-28)
阿里云 Hologres V4.2.0:QE V2 全面铺开,Liquid Table 让 shard 数从静态决策变成在线配置
事件概述
阿里云实时数仓 Hologres V4.2.0 发布(官方文档更新时间 2026-08-18),是本期唯一的中国厂商动态,也是四条里”最贴近单机引擎工程细节”的一条。这个版本在查询优化、数据摄入、AI 与多模态检索、存储引擎四个方向同时推进,其中最值得 DataInfra 从业者关注的有两处:查询引擎 V2(QE V2)的场景覆盖大幅扩展,以及 Liquid Table 让表的 shard 数可以在线变更。
Hologres 中 Table Group(TG)决定一张表的 shard 数,shard 数直接决定查询与写入的并行度——过少形成瓶颈,过多带来额外调度与资源开销。但实践中存在根本性难题:业务在建表时往往无法准确预估未来数据量。过去扩 shard 需要走 rebuild 路径——新建目标分布再把原表数据重新导入,对大表而言耗时随数据量线性增长。
技术解析
Liquid Table:把”改分布”与”搬历史数据”解耦
核心思路是元数据先切换,数据文件不动:reshard 时系统不同步重写历史文件,而是先完成 TG 与 shard 布局的元数据切换,让新写入立即进入新分布;随后后台按用户配置逐步将旧布局文件重排为新布局文件,不阻塞业务。因此用户感知到的生效时间取决于元数据切换(秒级)而非表的大小。
-- 创建目标 Table Group,决定新的 shard 数
CALL hg_create_table_group('tg_128', 128);
-- 一行 ALTER 完成在线扩容
ALTER TABLE public.orders SET (table_group = 'tg_128');
-- 可选:配置后台数据重组织窗口
ALTER TABLE public.orders SET (
liquid_table_enable_data_reorganization = true,
liquid_table_reorganization_partition_window = '3 day'
);
官方说明的边界是:ALTER 秒级返回,新写入与新查询立即使用新分布,修改期间写入请求延迟可能升高但不会失败,读延迟不受影响;降级到 V4.1 前需删除所有 Liquid Table。
QE V2 的场景扩展与执行层微优化
V4.2 把自 3.1 版本上线的 QE V2 执行引擎铺到了更多场景:Nested Loop Join、两阶段 Broadcast、Lookup Join、SQE(外表直读)、自适应 Bulkload DOP。同时新增了一批 CTE 计划改写规则与执行层复用机制,给出了相当具体的数字:
- Scan Filter 复用:Scan 算子执行过滤时就地复用 Filter 减少内存分配与计算开销,5%–20% 过滤率下性能提升超过 100%,50% 过滤率下提升超过 200%(GUC
hg_experimental_qe_v2_enable_reuse_filter,默认开启)。 - Fragment Instance 复用:消费完一个 split 后重置状态继续消费下一个,而非销毁重建;多文件场景下内存成本为 0,CPU 成本仅为新建的 41.8%(GUC
hg_experimental_qe_v2_enable_reuse_fragment_instance,默认开启)。 - 文件内并行扫描:单个 ORC 文件按
split_size_mb切成多个 sub-split 由多个 NiagaraScan 并发读取,解决大文件下标量扫描退化为单文件单并发的问题(GUChg_experimental_enable_parallel_file_scan,默认关闭)。 - 向量 TopK Scan 改写:解决”向量查询偏好大文件”与”标量 OLAP 查询偏好小文件”这组矛盾诉求,通过计划改写让两者在大文件场景下各取所需。
- 其他改写:Cross Join 支持 Runtime Filter(把标量子查询的聚合结果下推给 probe 端大表,在扫描阶段直接过滤行与 RowGroup)、重复 Project 下推、重复模式自动抽取为 CTE、聚合下推进 CTE producer、shuffle 下推与合并(多层 hash shuffle 共享前缀时只在最底层做一次)、join order 的
scale_factor调整新策略。此外超过 300 个 PQE 函数(含常用 JSON/JSONB 函数)迁移到新执行框架并可下推到 HQE。
数据湖侧与 AI 侧
- Paimon FileSystem Catalog 支持:简化数据湖表管理,并支持本地数据中心与云之间的数据同步等混合云场景。
- Paimon blob 类型读写:配合 DLF,Paimon 的 blob 类型映射到 PostgreSQL 生态的
bytea,使 AI 函数可以直接处理存为 Paimon blob 的多模态数据;ai_embed函数相应支持 BYTEA 与 Paimon blob 输入,可直接对二进制数据做 embedding,用于多模态检索与以图搜图。 - 数据湖查询引擎路径合并:HiveQE 与 FSE 两条路径合并,查询效率提升超过 30%。
- AI 函数接入 Model Studio:支持 LLM、LLM-VL、embedding、qwen-vl-ocr、qwen-mt 系列,覆盖 LLM 推理、文本 embedding、视觉理解、OCR、翻译;新增语音转文字函数
AI_TRANSCRIBE;全文检索新增模糊匹配与检索期分词器参数,索引格式改为多 segment(低命中率场景检索性能在特定情况下快 3 倍以上,拼音分词器吞吐提升 25%–150%)。 - 其他:
DECIMAL精度从 38 位扩展到 76 位(支持DECIMAL(76, 38),满足财务高精度计算,但不可作为 distribution key / cluster key / partition key);Dynamic Table 增量模式支持 TopN 处理;新增 cron job 定时调度能力;逻辑分区表 GA;Serverless 场景下逻辑分区表改用分区级锁降低锁竞争;HBO 准入阈值从 20 秒降到 1 秒以覆盖更多查询。
行业影响
Hologres V4.2 最值得注意的不是单点性能,而是它体现的两个工程取向。
其一,“把静态决策变成在线配置”正在成为实时数仓的标配能力。Liquid Table 与同日发布的 AWS MSK 原位 ZooKeeper→KRaft 升级(8 月 26 日,无需新建集群、无需数据迁移,走熟悉的版本升级流程)在精神上完全一致:它们都在消除”某件事必须在系统建立之初就一次性决定、之后想改就得推倒重来”这类运维债。对数据平台团队来说,这类能力的价值往往超过同等幅度的性能提升——因为它买断的是未来的试错权。
其二,数据湖与 AI 的耦合方式正在从”把数据搬到 AI 能读的地方”转向”让 AI 函数直接读湖里的二进制”。Hologres V4.2 的 Paimon blob 读写 + ai_embed 支持 BYTEA 输入,与本期 Ray Data 的 GPU-Native Operators、Iceberg/Delta 的 VARIANT 化,是三个不同层次上对同一件事的回应:多模态与半结构化数据正在成为数据基础设施的一等负载,而不是需要先被 ETL 成结构化表格的”原材料”。当 blob 与 VARIANT 都能被原生存储、原生索引、原生做向量检索,“数据湖 → 特征工程 → 模型训练”这条链路中间那层转换代码会持续变薄。
相关链接
- Hologres V4.2.0 Release Note(阿里云帮助中心)
- Hologres 数据湖加速能力总览(含 Paimon / Iceberg / DLF 支持矩阵)
- Announcing in-place ZooKeeper-to-KRaft cluster upgrades for Amazon MSK(AWS Big Data Blog, 2026-08-26)
编者评
把这四条放在一起,最清晰的线索是“位置”与”形状”这两件事正在同时被重新定义。
位置问题上,Amazon 收购 DuckLabs 与 Ray Data 的 GPU 化看似方向相反——一个把计算往进程内收,一个把计算往 GPU 和网络拓扑里推——但它们的判断依据是同一个:硬件的物理约束已经改变,因此软件必须重新回答”计算应该发生在哪里”。Warfield 给出的剪刀差(单机 50 倍增长 vs 数据集的幂律分布)解释了前者;Ray Data 用 15 倍加速的 MinHash 与 3.1 倍 TCO 证明的则是后者——对 hash 密集、shuffle 密集负载,GPU 的通信栈(NVLink/RDMA)本身就成了新的性能来源。二者并不冲突:未来的数据栈大概率是”TB 级以下就地算、TB 级以上按数据形状选 CPU 或 GPU 集群”,而不是一条路径通吃。
形状问题上,Iceberg v3 与 Delta 4.4.0 的同步推进说明表格式竞争已经越过”元数据正确性”阶段,进入”类型表达能力”阶段。VARIANT 同时出现在 Iceberg、Delta 与 DuckDB v2.0 三条路线上尤其值得关注——这意味着半结构化数据进湖仓的展平管线可能在两三年内大幅萎缩。而 Hologres 的 Paimon blob 支持则从另一侧逼近同一目标:不是把多模态数据结构化后再入库,而是让库直接理解二进制并在其上做 embedding。
最后一个容易被忽略但可能最有长期价值的信号,是本期反复出现的**“解除一锤定音”主题:Shuffle V2 解除了”shuffle 前必须猜对 aggregator 池大小”,Liquid Table 解除了”建表时必须猜对 shard 数”,MSK 原位 KRaft 升级解除了”建集群时必须选对元数据模式”,Delta 4.4.0 的生成列则解除了”派生值的不变量只能靠写入端自觉遵守”。在硬件红利足以掩盖大量低效的年代,这些静态决策的代价并不显眼;而当竞争焦点转向”业务变化的速度能否快过平台调整的速度”**时,能否把一次性决策改造成可在线调整的配置,就成了区分平台代际的关键。DataInfra 的下一个分水岭,可能不在于谁算得更快,而在于谁更少地强迫用户在第一天就把话说死。