AWS Glue ETL
AWS Glue ETL 支持从各种来源提取数据,对其进行转换以满足您的业务需求,然后将其加载到您选择的目的地。该服务使用 Apache Spark 引擎在 worker 节点之间分配大数据工作负载,从而通过内存处理实现更快的转换。
AWS Glue 支持各种数据源,包括Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB 和Amazon Relational Database Service (Amazon RDS)。有关支持的数据源的更多信息,请参阅中的 AWS Glue ETL 的连接类型和选项。
在 AWS Glue 中创作
AWS Glue 根据您的经验和用例,提供了多种创作 ETL 作业的方法:
-
Python Shell 作业专为运行用 Python 编写的基本 ETL 脚本而设计。这些作业在单台计算机上运行,更适合小型或中型数据集。
-
Apache Spark 作业可以用 Python 或 Scala 编写。这些作业使用 Spark 在多个 worker 节点上水平扩展工作负载,以便它们可以处理大型数据集和复杂的转换。
-
AWS Glue 流式传输 ETL 使用 Apache Spark 结构化流处理引擎,通过 exactly-once
在微批处理作业中转换流式处理数据。您可以用 Python 或 Scala 创作 AWS Glue 流式处理作业。 -
AWS Glue Studio 是一个方框和箭头风格的可视化界面,可助力刚接触 Apache Spark 编程的开发人员访问基于 Spark 的 ETL。
数据处理单元
AWS Glue 使用数据处理单元 (DPU) 来测量分配给 ETL 任务的计算资源并计算成本。每个 DPU 相当于 4 个 vCPU 和 16 GB 内存。应根据 AWS Glue 任务的复杂性和数据量为其分配 DPU。分配适当数量的 DPU 可以让您在性能需求和成本限制之间取得平衡。
AWS Glue 提供了针对各种工作负载进行了优化的多种 Worker 类型:
-
G.1X 或 G.2X(适用于大多数数据转换、联接和查询)
-
G.4X 或 G.8X(适用于要求较高的数据转换、聚合、联接和查询)
-
G.025X(适用于低容量和零星的数据流)
-
标准(适用于 AWS Glue 1.0 或更早版本;不建议用于更高版本的 AWS Glue)
使用 Python Shell
对于 Python Shell 作业,您可以使用 1 个 DPU 来使用 16 GB 的内存,也可以使用 0.0625 DPU 来使用 1 GB 的内存。Python Shell 适用于具有中小型数据集(最大约 10 GB)的基本 ETL 作业。
比较工作线程类型
下表显示了使用 Apache Spark 环境的批处理、流式处理和 AWS Glue Studio ETL 工作负载的不同 AWS Glue Worker 类型。
G.1X |
G.2X |
G.4X |
G.8X |
G.025X |
Standard |
|
vCPU |
4 |
8 |
16 |
32 |
2 |
4 |
内存 |
16 GB |
32 GB |
64 GB |
128 GB |
4 GB |
16 GB |
磁盘空间 |
64 GB |
128 GB |
256GB |
512GB |
64 GB |
50 GB |
每个工作线程的执行器 |
1 |
1 |
1 |
1 |
1 |
2 |
DPU |
1 |
2 |
4 |
8 |
0.25 |
1 |
不建议在 AWS Glue 2.0 及更高版本中使用标准 Worker 类型。G.025X Worker 类型仅适用于使用 AWS Glue 版本 3.0 或更高版本的流式处理作业。