亚马逊 S3 添加排序和 Z 顺序压缩以提高 Apache Iceberg 查询性能

  • AWS 近期宣布 Amazon S3 现在支持 Apache Iceberg 表的排序和 Z 序压缩(https://aws.amazon.com/about-...)。新功能可减少扫描时间和引擎成本,S3 表和使用 AWS Glue 数据目录优化的传统 S3 存储桶均可使用。

    • 排序压缩可减少查询引擎扫描的数据文件数量,Z 序压缩通过同时查询多列时的高效文件修剪提供额外性能优势。AWS 首席开发倡导者 Sébastien Stormacq 解释:处理高摄入或频繁更新的数据集时,数据湖会积累许多小文件,影响查询成本和性能。默认的 binpack 策略有显著性能提升,而 S3 和 S3 表的排序和 Z 序压缩选项可为跨一个或多个维度的查询带来更大收益。
    • 排序压缩根据用户定义的列顺序组织文件,表有定义的排序顺序时,S3 表压缩将在压缩过程中使用“sort”将相似值聚类。
    • 在 Apache Iceberg 中,压缩可用于将小文件合并为大文件(bin packing)、将删除文件与数据文件合并、根据查询模式对数据进行排序或使用空间填充曲线对数据进行聚类以优化不同的查询模式(Z 序排序)。
    • S3 表基于定义的表元数据在压缩期间提供自动分层排序的托管体验。对于多查询谓词的平等优先级,可通过维护 API 启用“z-order”压缩。对于通用 S3 存储桶中的 Iceberg 表,可在 Glue 数据目录控制台配置压缩方法。Stormacq 补充:根据数据布局和查询模式,从 binpack 切换到 sort 或 z-order 时观察到性能提升三倍或更多。
  • BMW 产品经理 Ruben Simon 评论:在 BMW 最大的大数据分析平台使用数千个 S3 存储桶和 Iceberg 表时,看到 Z 序排序带来的重大查询性能提升,下一个 Bloom filters 会使其更强大。
  • 在文章"S3 Managed Tables, Unmanaged Costs: The 20x Surprise with AWS S3 Tables"中,Onehouse.ai 软件工程师 Vinish Reddy Pannala 和 Onehouse.ai 产品副总裁 Kyle Weller 质疑压缩的可配置选项缺乏:表创建约 3 小时后,S3 表最终触发压缩,执行 10 次替换操作并在 1 小时内压缩约 100GB 数据。这暴露了 S3Tables 方法的更深层次缺陷,即它未认识到理想的压缩配置特定于不同类型的读写器。
  • AWS 首席分析专家 Yonatan Dolan 警告:在调整 Apache Iceberg 的查询性能时,每个人都谈论排序、Z 序和 BinPack 压缩,排序有帮助(当做得正确时),Z 序在正确的查询上可优于 bin-packing,但在使用 TPC-H SF100 lineitem(约 6 亿行/17GB 压缩)的基准测试中,发现更有影响力的是压缩前文件的起始大小可极大影响成本。
  • 新的压缩选项在支持 S3 表的所有区域以及与 Glue 数据目录集成的标准 S3 存储桶中可用,新功能没有特定成本。
阅读 207
0 条评论