亚马逊AWS官方博客
一分钟从零构建数据湖,S3 Tables 究竟有啥魔力?
![]() |
HAQM S3 Tables 产品介绍
在当今的商业环境中,人工智能(AI)和数据应用的普及正驱动企业加速创新和提高效率。企业广泛采用 AI 技术来优化运营、提升客户体验,并在竞争激烈的市场中保持领先地位。例如,酒店业利用生成式 AI 自动化客户服务,显著减少等待时间和运营成本。 金融机构则通过 AI 提升生产力,旨在将这些技术转化为盈利。 此外,AI 在研发领域的应用也在重塑产品开发流程,促进更快的创新和市场响应。然而,企业在部署 AI 时需谨慎考虑数据安全、监管合规和技术成熟度等因素,以确保负责任且有效地应用这些技术。HAQM S3 于 2006 年推出,提供了可扩展、可靠且低延迟的数据存储服务。2024 年,亚马逊云科技发布了 S3 Tables,内置对 Apache Iceberg 的支持,旨在优化大规模表格数据的存储和查询性能。S3 Tables 通过自动化的表维护和与亚马逊云科技的分析服务的无缝集成,帮助企业更快速地构建数据湖,简化权限管理,并提升查询性能和事务处理能力,满足现代数据驱动型业务的需求。本文将探讨 S3 Tables 技术的应用场景及其对业务的收益及最佳实践,提供生产中可参考的价值。
应用场景
1. 快速构建数据湖
在传统数据库应用场景中,例如使用 MySQL 关系型数据库,当表的数据量变得极为庞大时,常常会面临查询性能急剧下降的问题。例如在电商领域,每日的交易记录、用户行为数据等随着业务扩展不断累积,表中的数据量达到数千万甚至数十亿条记录。除了查询性能下降,超大表的存在还使得索引更新需消耗额外的计算资源,增加了系统的运算负担,还在存储层面带来额外的运维开销。
在面对传统数据库超大表查询困难的问题上,大数据技术及相关工具正逐渐成为企业突破瓶颈、实现数据价值最大化的有力武器。其中,HAQM S3 Tables 支持企业从海量数据(如日志、事务数据、IoT 数据)中快速构建数据湖,并支持高效查询与分析的需求,可以帮助快速、低成本帮助企业构建大数据分析服务,并解决数据库超大表查询问题。
2. Hive 传统数仓的替换
对于已经使用大数据技术栈,采用传统 Hive 构建数据仓库的企业,随着数据量的不断增长和业务需求的日益复杂,仍然面临几点挑战。
- 数据更新&删除操作困难:增量数据更新、数据临时修复/删除是常见的业务场景,然而 Hive 表对数据的更新、删除支持有限,在实际业务中修正错误数据或删除过期数据,但在 Hive 中执行这些操作需要对整表进行重写。
- 查询效率低:业务对于数据查询速度提出了更高的要求,尤其涉及超大表的 OLAP 查询。
- 存储&运维成本高:基于块存储的 HDFS 需要不断进行扩展
HAQM S3 Tables 作为完全托管的 Iceberg 开发表格式,有效应对以上传统数仓痛点问题。
- 支持丰富的 SQL 表达:传统 Hive 表需要通过
INSERT OVERWRITE
重写整表来达到数据更新、删除的目的。S3 Tables 支持对数据的细粒度更新/删除操作,支持UPDATE
、DELETE
、MERGE INTO
等 SQL 表达,无需像 Hive 那样重写整个表。S3 Tables 通过维护数据文件的元数据,记录数据的更改历史,能够精确地定位、修改需要更新的部分或删除表中的特定行。 - 查询性能优化:S3 Tables 支持先进的文件格式(Parquet 或 ORC),并结合了数据分区和索引技术,可以根据查询条件快速过滤掉不需要的数据文件和数据块,减少数据的读取量。在进行大规模的 OLAP 查询时,S3 Tables 能够利用分区和索引信息,只读取与查询相关的部分数据,从而缩短查询时间。此外,HAQM Athena 与 S3 Tables 无缝集成,作为无服务器交互式查询服务,能利用 S3 Tables 的数据组织和索引结构,以分布式并行处理查询任务,提升数据分析效率与响应速度。
以下是对比 S3 Tables 使用 Athena 查询与 Hive on HAQM EMR 用 Spark 查询在超大表复杂查询的实验对比结果。从基于 Cloud-DWB-Derived-from-TPCH 3TB 数据集的 6 个复杂 SQL 观测到,查询扫描的数据体积从 4GB~286GB,Q1、Q2、Q4、Q6 查询中 S3 Tables + Athena 查询性能优于 Hive + Spark 查询,最大节省时长超 52%。
![]() |
其中,Hive Cluster 2 配置如下:
Hive on EMR | 类型 | 数量 |
主实例节点 | m5.4xlarge (16vCPU+64GB) | 1 |
核心节点 | i3.4xlarge (16vCPU+122GB) | 4 |
任务节点 | i3.4xlarge (16vCPU+122GB) | 4 |
- 存储和运维成本:S3 Tables 采用了全新的表格式桶,利用了对象存储的低成本和高可扩展性优势。与 Hive 基于块存储的 HDFS 相比,S3 等对象存储成本相对较低,并且可以根据数据量的增长灵活扩展,无需担心存储节点的容量限制。在运维管理方面,S3 Tables 作为全托管服务,不需要像 Hive 那样维护复杂的 HDFS 集群和相关的管理组件。它与 S3 集成紧密,借助云服务的管理功能,减少了运维的工作量和复杂性。
3. 从开源 Apache Iceberg 切换
Apache Iceberg 是一个流行的高性能数据湖表格式,满足用户在大数据场景下对可靠性和 SQL 表简洁性的需求。Iceberg 的开源社区非常活跃,截止 2025 年 3 月,Iceber 项目有超过 7.1k 的 starred ,Fork 超过 2.4 k 。社区主要有来自中国、美国、印度及其它国家地区贡献者,目前有 300+ 开放的问题及 130+ 的提交请求。
企业在使用开源软件构建业务时,往往会遇到学习成本高、质量参差不齐、维护和支持不足以及一些安全隐患。HAQM S3 Tables 相比用户直接使用 Apache Iceberg,帮助客户解决了以下三个主要问题:
- 自动运行维护:S3 Tables 自动执行关键的表维护任务,如压缩、快照管理和未引用文件删除。这些操作在后台持续进行,优化查询性能并降低存储成本,减轻了用户的运维负担。
- 增强的性能:通过持续的表优化,查询性能有明显提升;与存储在通用 S3 存储桶中的 Iceberg 表相比,每秒事务处理量可提升高达 10 倍。与未经过 compaction 处理的数据表相比,S3 Tables 自动优化后,性能可提升 2~3 倍。可以参考博客。
- 无缝集成与兼容性与安全性:S3 Tables 支持 Apache Iceberg 标准,能够与常用的亚马逊云科技服务(如 HAQM Athena、Redshift、EMR)以及第三方查询引擎(包括 Apache Spark)无缝集成,简化了数据分析流程。您可以参考本文第一章节,在亚马逊云科技上快速构建数据湖业务。
4. 作为 AI/ML 统一数据基座
AI/ML 科学家 ML 算法。使用 PyIceberg,您可以在 Python 环境中直接管理和操作 Iceberg 表,无需依赖 JVM。这使得数据科学家和工程师能够更方便地在熟悉的 Python 生态系统中处理大规模数据。PyIceberg 可以直接集成 S3 Tables,详细说明可以查看博客。在机器学习训练过程中,PyIceberg 可以与 Pandas、PyArrow、Ray 等数据处理库结合使用。例如,您可以将 Iceberg 表的数据加载为 Pandas DataFrame,随后进行数据预处理、特征工程等操作。此外,PyIceberg 还支持与 PyTorch 或 TensorFlow 等深度学习框架集成,方便地将 Iceberg 表的数据转换为这些框架所需的数据集格式。
以下是一个简单的示例,展示如何使用 PyIceberg 连接到 Iceberg 目录并读取数据:
生产建议
- 数据接入 (全量/增量):对于业务数据全量/增量接入的场景,使用 HAQM Glue ETL 通常是推荐的选择。如果对于数据查询实时性有一定要求,可以通过 HAQM Data Firehose 与 S3 Tables 集成的能力来设计链路,参考文档。
- 查询效率优化: 1. 通过分区设计,利用 S3 Tables 查询时分区裁剪的特性,减少扫描量来加速查询/降低查询成本。例如提前根据业务表的预期增长进行设计,例如对时序数据根据时间设计分区等。2. 通过开启 S3 Tables 托管的 Compression 功能,对小文件进行自动合并,提升查询性能。
- 定期备份:制定定期备份计划,将 S3 Tables 中的数据备份到一个 S3 通用存储桶中,并通过生命周期管理对冷数据进行归档。