写点什么

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:009601

评论

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

镜像拉取节省 90% 以上,快手基于 Dragonfly 的超大规模分发实践

OpenAnolis小助手

开源 架构 快手 龙蜥技术 容器云平台

基于Spring Cache实现Caffeine、jimDB多级缓存实战

京东科技开发者

spring 缓存 接口 系统 企业号 1 月 PK 榜

企业用好WMS(仓库管理系统),需要注意的几个要点

SAP虾客

WMS系统 ERP系统 RFID

电商秒杀系统架构设计

π

架构实战营

RCC目前最近技术与今后发展

华秋PCB

PCB PCB设计 HDI 生产工艺 RCC

OpenYurt v1.2 新版本深度解读(一): 聚焦边云网络优化

阿里巴巴云原生

阿里云 开源 云原生 openyurt

架构实战营4.5 常见存储系统随堂练习

西山薄凉

「架构实战营」

C++实现惰性求值

SkyFire

c++ 函数式编程 模板元编程

真相了!TCP连接原来是这么被墙干掉的!

程序员小毕

程序员 后端 网络协议 架构师 tcpip

编程技术面试的7个英文网站,你知道几个?

风铃架构日知录

Java 技术 面试 后端 技能提升

「Go框架」路由中间件:为什么能够在目标函数前后运行?

Go学堂

golang 开源 程序员 个人成长 框架学习

委派模式——从SLF4J说起

vivo互联网技术

Java slf4j 委派模式

秒杀场景下的业务梳理——Redis分布式锁的优化

小小怪下士

Java redis 分布式

NFTScan 与 MAY 达成战略伙伴关系,双方在元宇宙 NFT 数据方面进行深度合作!

NFT Research

NFT 元宇宙

视频发布失败原因不好找?火山引擎数智平台这款产品能帮忙

字节跳动数据平台

大数据 增长 用户分析

除了Navicat破解版、DBeaver,免费还好用的数据库管理工具/SQL工具还有推荐吗?

雨果

sql navicat 数据库管理工具 Dbeaver SQL开发工具

组合多个动画效果 —— Flutter 交错动画(Staggered Animation)简介

岛上码农

flutter ios 前端 动画 安卓开发

基于 SLO 告警(Part 1):基础概念

Grafana 爱好者

可观测性 SRE SLO

5 个 JavaScript 代码优化技巧

devpoint

JavaScript 前端开发 JS代码优化 扩展运算符

如何实现千万级优惠文章的优惠信息同步

京东科技开发者

redis 企业号 1 月 PK 榜 信息同步 伸缩任务 任务检测

架构训练营模块五作业

张Dave

CRC工业精密电器清洁剂,硬核技术护航清洁产业发展

科技热闻

如果在冬夜,你是一位新能源旅人

脑极体

新能源 领克 混动

架构实战营4.6 千万学生管理系统存储设计

西山薄凉

「架构实战营」

Verilog HDL行为级建模

timerring

FPGA

Go语言DDD实战初级篇

百度Geek说

Go 数据库 微服务 企业号 1 月 PK 榜

OpenStack的“神秘组件” 裸金属(Ironic)管理使用

统信软件

OpenStack 服务管理 裸金属

易观千帆 | 2022年12月银行APP月活跃用户规模盘点

易观分析

金融 手机银行 用户

架构实战营模块四作业

西山薄凉

「架构实战营」

使用启科QuPot+Runtime+QuSaaS进行量子应用开发及部署-调用AWS Braket计算后端

启科量子开发者官方号

量子计算 Amazon Braket

Java高手速成 | JSP MVC模式项目案例

TiAmo

mvc java; jsp

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