AWS Glue

无服务器可扩展的 ETL 服务,统一提供数据目录元数据管理和基于 Apache Spark 的作业执行基础设施

概述

AWS Glue 是一项以无服务器方式执行数据抽取、转换、加载 (ETL) 的全托管服务。Glue Data Catalog 统一管理数据湖和数据仓库的元数据,供 Athena、Redshift Spectrum、EMR 等查询引擎作为通用模式定义引用。Crawler 自动扫描数据源推断并注册模式,无需手动定义表。作业执行基础设施提供 Apache Spark 和 Python Shell 两种类型,覆盖从大规模分布式处理到轻量脚本执行的广泛工作负载。

Data Catalog 与 Crawler 改变的元数据管理

Glue 的核心是 Data Catalog。将 S3 上的 Parquet 文件、RDS 表、Redshift 模式等分散数据源的元数据集中到一处,以 Hive Metastore 兼容接口公开。在 Athena 中编写查询时,FROM 子句指定的表定义实质上就是 Data Catalog 的条目。Crawler 定期扫描数据源,自动推断列名、数据类型、分区结构并注册到 Catalog。但推断精度并非万能,存在 CSV 首行被误判为数据而非标题、数值与字符串混合列类型不稳定等情况。一种做法是在 Crawler 首次运行后确认推断结果,必要时手动修正类型。自定义 Classifier 可支持独有格式文件。Azure 对应服务 Azure Data Factory 在 Microsoft 文档中被描述为基于云的 ETL 和数据集成服务。

Spark 作业与 Python Shell - DPU 设计要点

Glue 作业包括基于 Apache Spark 的 ETL 作业 (含流式 ETL 作业) 和单节点运行的 Python Shell 作业等。Spark 作业适用于大规模数据的分布式处理,通过 DPU (Data Processing Unit) 分配数控制集群规模。开发者指南将 1 DPU 描述为由 4 vCPU 和 16 GB 内存构成的处理能力单位 (截至 2026 年 10 月)。增加 DPU 可加速处理,但计费为 DPU 数 × 执行时间,过度分配直接导致成本浪费。也有先以较少的 DPU 执行,一边确认 CloudWatch 指标的内存使用率和 Shuffle 数据量一边逐步扩容的做法。Python Shell 作业以 1 DPU 或 0.0625 DPU 运行,适用于 API 调用或轻量文件转换等不需要 Spark 开销的处理。

Job Bookmark 与数据管道的幂等性

ETL 管道的问题之一是「重复处理相同数据」。Glue 的 Job Bookmark 通过记录上次作业执行处理到哪里来应对此问题,下次执行时仅处理未处理部分。据开发者指南,S3 源检查对象的最后修改时间,JDBC 源默认使用主键 (需连续递增或递减) 作为书签键,实现增量处理。但 Job Bookmark 仅在数据追加 (append) 时有效。现有文件覆盖更新或分区级别全量替换时,仅靠 Bookmark 无法保证一致性。此类场景需结合将已处理文件移动到其他 S3 前缀的方式,或在 DynamoDB 中记录已处理键自行管理幂等性。使用 Glue Workflow 可将多个 Crawler 和作业按依赖关系串联,结合 Step Functions 可构建包含错误处理和条件分支的复杂数据管道。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享