通过 AWS Glue 构建 ETL 管道 - 爬虫程序与作业的设计
通过爬虫程序自动发现 Schema,通过 Glue 作业执行 ETL 处理。介绍 Data Catalog 的活用模式和通过 Glue Studio 进行可视化开发。
爬虫程序与 Data Catalog
Glue 爬虫程序自动扫描 S3、RDS、Redshift、DynamoDB 等 30 多种数据源,发现 Schema(表定义、列名、数据类型)并注册到 Data Catalog。指定 S3 路径后,自动判别文件格式(CSV、JSON、Parquet、ORC 等),并检测分区结构。通过定时执行爬虫程序,自动检测新分区和 Schema 变更并更新 Catalog。Data Catalog 是 Hive 兼容的元数据存储,可从 Athena、EMR、Redshift Spectrum 直接引用。
Glue 作业的设计
Glue 作业使用 Python(PySpark)或 Scala 编写 ETL 脚本,在无服务器 Spark 环境中执行。DynamicFrame 是 Glue 独有的数据结构,通过 ResolveChoice 灵活处理同一列中混合不同数据类型的 Schema 不一致问题。Glue Studio 的可视化编辑器可通过拖放操作连接源(S3、RDS、Kafka 等)、转换和目标来构建 ETL 管道。作业书签记录已处理数据的位置,实现仅处理新增数据的增量处理。
数据质量与 Glue Studio
Glue Data Quality 定义数据质量规则(DQDL),在 ETL 管道内自动执行数据验证。以声明方式编写完整性(NULL 值比例)、唯一性(重复检查)、参照完整性(外键存在确认)等规则,当质量分数低于阈值时停止作业或发出告警。Glue Studio 是可视化 ETL 编辑器,通过拖放操作连接源、转换和目标来构建管道,无需编码即可实现复杂的 ETL 逻辑。
Glue 的成本优化
Glue 作业按 DPU(Data Processing Unit)小时计费,1 DPU 相当于 4 vCPU 和 16 GB 内存。Glue 4.0 通过 Auto Scaling 根据作业负载自动调整 DPU 数,防止过度资源分配。Flex 执行类面向非紧急批处理作业,比标准执行便宜约 35%。降低爬虫程序的执行频率(从每小时改为每天)也可减少 DPU 消耗。作业书签实现增量处理,避免每次全量处理的浪费。
总结
Glue 统一提供爬虫程序的 Schema 自动发现、无服务器的基于 Spark 的 ETL 作业和 Hive 兼容的 Data Catalog。通过 Data Quality 自动验证数据质量规则,通过 Glue Studio 的可视化编辑器无需编码即可构建 ETL 作业。通过作业书签实现增量处理,通过 Flex 执行类将非紧急作业的成本降低约 35%。