AWS Glue 热门2016年〜
自动化数据抽取、转换和加载的无服务器 ETL 服务
它能做什么
AWS Glue 是自动化从各种数据源抽取数据、转换为适合分析的格式并加载到数据仓库或数据湖的一系列处理 (ETL) 的无服务器服务。无需构建和管理服务器,数据目录功能可自动发现和管理数据的位置和模式 (结构)。内置基于 Apache Spark 的处理引擎,可并行高速执行大规模数据转换。
使用场景
适用于将 S3 中积累的原始数据格式转换并集成到数据湖、构建从多个数据库和应用整合数据的管道、在 Redshift 或 Athena 分析前进行数据清洗和规范化、将日志数据转换为 Parquet 格式以优化查询成本等需要数据预处理和集成的场景。
日常类比
可以将其比作食品加工厂。从农户 (数据源) 送来的蔬菜水果 (原始数据) 形状大小各异。加工厂 (Glue) 自动进行清洗、切割、包装,使其能整齐地摆放在超市货架 (数据仓库) 上。工厂设备只按使用时间收费,不运行时维护费为零。
什么是 Glue
AWS Glue 是 2017 年推出的无服务器数据集成服务。ETL 是 Extract (抽取)、Transform (转换)、Load (加载) 的缩写,指收集分散在不同系统中的数据、整理成易于分析的形式并存储的处理。传统 ETL 工具需要大量精力构建运维服务器和配置作业调度,而 Glue 将这些全部交由 AWS 管理,开发者可专注于数据转换逻辑。
数据目录
Glue 的核心功能之一是数据目录。称为爬虫的功能自动扫描 S3、RDS、Redshift 等数据源,将表定义和模式信息注册到目录中。该目录可被 Athena、Redshift Spectrum、EMR 等其他 AWS 分析服务引用,作为集中管理数据位置和结构的元数据存储。数据添加或变更时,爬虫检测差异并自动更新目录。
ETL 作业机制
Glue 的 ETL 作业在基于 Apache Spark 的分布式处理引擎上运行。可用 Python (PySpark) 或 Scala 编写作业脚本,使用 Glue Studio 的可视化编辑器还可以通过拖放构建 ETL 管道而无需编写代码。作业执行时自动分配所需计算资源,处理完成后释放。定价基于 DPU (Data Processing Unit) 使用时间按量计费。 如需把握 ETL 作业机制的全貌,可参阅 专业书籍 (Amazon)。
作业调度与工作流
Glue 内置了管理作业执行计划的调度器和连接多个作业的工作流功能。可用 cron 表达式设置作业定期执行,或定义前置作业成功后才执行下一个作业的依赖关系。使用触发器功能还可以构建以文件到达 S3 为触发自动启动 ETL 作业的事件驱动管道。
入门指南
要开始使用 Glue,首先在 Glue 控制台创建爬虫,指定 S3 存储桶等数据源并执行。爬虫检测数据并在目录中注册表后,在 Glue Studio 中创建可视化 ETL 作业。将源 (输入)、转换 (过滤和列变更)、目标 (输出目的地) 作为节点放置并连接,即可完成 ETL 管道。测试运行确认结果后,设置计划转入定期执行。
注意事项
- Pricing is based on DPU usage time, so costs increase with large data transformations. Use small datasets for development and testing
- Running crawlers too frequently increases costs. Set appropriate schedules based on data update frequency
- Glue Studio's visual editor enables no-code ETL, but for complex transformation logic, writing PySpark scripts directly is more appropriate