限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

Amazon S3 新增排序和 Z-Order 压缩功能,提升 Apache Iceberg 查询性能

  • 2025-07-17
    北京
  • 本文字数:1333 字

    阅读完需:约 4 分钟

大小:665.55K时长:03:47
Amazon S3新增排序和Z-Order压缩功能,提升Apache Iceberg查询性能

AWS 最近宣布 Amazon S3 支持 Apache Iceberg 表的排序和叠放顺序压缩功能。这些新功能能够有效减少数据扫描时间,降低引擎成本,适用于 S3 表和以及通过 AWS Glue 数据目录优化的传统 S3 存储桶。


排序压缩能够显著减少查询引擎扫描的数据文件数量,而叠放顺序压缩则通过高效的文件修剪,在跨多列查询时进一步提升性能。AWS 首席开发者布道师 Sébastien Stormacq 解释道

在处理高吞吐量或频繁更新的数据集时,数据湖往往会积累大量小文件,这些文件会对查询成本和性能产生负面影响。尽管默认的 binpack 策略结合托管压缩能够显著提升性能,但为 S3 和 S3 表引入排序和叠放顺序压缩功能,可以为涉及多个维度过滤的查询带来更大的性能提升。


排序压缩会按照用户定义的列顺序对文件进行组织。当表指定了排序顺序后,S3 表的压缩操作会在执行过程中通过排序将相似值聚集在一起。


Apache Iceberg 中,压缩功能可用于将小文件合并为大文件(bin packing)、将删除文件与数据文件合并、根据查询模式对数据进行排序,或通过使用空间填充曲线对数据进行聚类以优化不同的查询模式(叠放顺序排序)。


S3 表提供了托管体验,在压缩过程中会根据定义的表元数据自动进行分层排序。对于需要平等优先处理多个查询谓词的场景,可以通过维护 API 启用叠放顺序压缩。对于通用型 S3 存储桶中的 Iceberg 表,可以在 Glue 数据目录控制台配置压缩方法。Stormacq 还提到:

根据我的经验,根据数据布局和查询模式的不同,从 Binpack 切换到排序或叠放顺序压缩时,性能提升可达三倍甚至更多。


宝马的产品经理 Ruben Simon 评论道

在宝马最大的大数据分析平台上,我们使用了数千个 S3 存储桶和 Iceberg 表,通过采用叠放顺序优化,实现了显著的查询性能提升。如果再加上布隆过滤器,效果会更强大。


"S3 Managed Tables, Unmanaged Costs: The 20x Surprise with AWS S3 Tables" 这篇文章中,Onehouse.ai 的软件工程师 Vinish Reddy Pannala 和产品副总裁 Kyle Weller 对压缩的可配置选项不足提出了质疑:

在表创建大约 3 小时后,S3 表最终触发了压缩,执行了 10 次替换操作,并在 1 小时内压缩了大约 100 GB 的数据。这暴露了 S3Tables 方法的一个深层次问题,即它没有考虑到理想的压缩配置应当根据不同类型的读取器和写入器进行调整。


现有的压缩文件将保持不变,只有在启用排序或叠放顺序后写入的新数据才会受到影响,除非客户使用标准的 Iceberg 工具显式重写数据,或者通过调整表维护设置中的目标文件大小来改变这一情况。AWS 首席分析专家 Yonatan Dolan 警告

每个人都在谈论 Apache Iceberg 中的排序、叠放顺序和 binpack 压缩对查询性能带来的优化。没错,排序确实有效(前提是操作正确),叠放顺序在某些查询上可以超越 binpack。但在我的基准测试中,使用 TPC-H SF100 lineitem 数据集(约 6 亿行 / 17 GB 压缩),我发现了一个更具影响力的因素:文件在压缩前的初始大小会对成本产生巨大影响。


来源:Yonatan Dolan 的帖子


这些新的压缩功能已在支持 S3 表的所有区域推出,并适用于支持与 Glue 数据目录集成的标准 S3 存储桶。使用这些功能无需额外费用。


【声明:本文由 InfoQ 翻译,未经许可禁止转载。】


原文链接:

https://www.infoq.com/news/2025/07/amazon-s3-iceberg-compaction/

2025-07-17 13:001

评论

发布
暂无评论
发现更多内容

关于SpringCloudAlibaba,看阿里这篇笔记真香

程序知音

Java 微服务 阿里 SpringCloud 后端技术

SpringBoot与Thymeleaf模板入门整合篇

Java-fenn

Java

OpenFeign引起的HTTP Status 400与Tomcat吞没数据

Java-fenn

Java

阿里前端高频面试题

beifeng1996

JavaScript 前端

vite 3.0 都发布了,经常初始化 vite 项目,却不知 create-vite 原理?揭秘!

若川

JavaScript vue.js 前端 nodejs vite

百度前端二面常见面试题合集

bb_xiaxia1998

JavaScript 前端

MySQL必知必会-检索数据

阿柠xn

MySQL sql 数据检索 9月月更

还在用开发者工具上传小程序? 快来试试 miniprogram-ci 提效摸鱼

若川

JavaScript 小程序 前端 小程序开发

字节前端高频面试题

helloworld1024fd

JavaScript 前端

【云原生】Nacos中的事件发布与订阅--观察者模式

石臻臻的杂货铺

云原生 nacos 9月月更

一文带你深入掌握ES6 Proxy数据代理

海底烧烤店ai

JavaScript node.js 全栈开发 9月月更

高项-第一章 信息化和信息系统(2)

索隆

项目管理 软考

我的设计模式之旅 ⑦ 观察者模式

Java-fenn

Java

css实现模糊镜效果及渐变字体和text-shadow冲突解决方案

Java-fenn

Java

生成 UUID 的三种方式及测速对比!

掘金安东尼

前端 9月月更

图灵访谈 | 一位半路出家的程序员的“天命”之选

图灵教育

Java 人工智能 大数据 编程语言 可视化

数据湖与数据仓库

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

【云原生 | 从零开始学Docker】三、Docker实战之安装Nginx和Tomcat

泡泡

Docker 云计算 容器 云原生 9月月更

应届的我,面试37次,16个offer上岸后总结了一些面试心得

收到请回复

Java 项目管理 面试 语言 & 开发 秋招

架构师的十八般武艺:测试保障

agnostic

测试

java之面向对象1

喜羊羊

java; 9月月更

【JavaWeb】JDBC快速入门时间

Java-fenn

Java

观察|数字经济新业态:云安全与生物医药CDMO合作成新趋势

Java-fenn

java;

java之面向对象2

喜羊羊

java; 9月月更

数据结构与算法(四)——栈和队列

Java-fenn

Java

高级前端二面面试题

夏天的味道123

JavaScript 前端

经常用 vant-weapp 开发小程序,却不知道如何开发一个组件?

若川

JavaScript 小程序 前端 前端开发 小程序开发

Java基础(一)| Java概述与基础语法案例

timerring

Java core 9月月更

自动化测试中对多断言的思考和实践

Java-fenn

Java

Java之面向对象3(终结篇)

喜羊羊

java; 9月月更

万字长文带你吃透SpringCloudGateway工作原理+动态路由+源码解析

Java快了!

Amazon S3新增排序和Z-Order压缩功能,提升Apache Iceberg查询性能_亚马逊云科技_Renato Losio_InfoQ精选文章