

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Glue ETL
<a name="aws-glue-etl"></a>

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 的连接类型和选项](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html)。

## 在 AWS Glue 中创作
<a name="authoring-etl"></a>

AWS Glue 根据您的经验和用例，提供了多种创作 ETL 作业的方法：
+ [Python Shell 作业](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html)专为运行用 Python 编写的基本 ETL 脚本而设计。这些作业在单台计算机上运行，更适合小型或中型数据集。
+ [Apache Spark 作业](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming.html)可以用 Python 或 Scala 编写。这些作业使用 Spark 在多个 worker 节点上水平扩展工作负载，以便它们可以处理大型数据集和复杂的转换。
+ [AWS Glue 流式传输 ETL](https://docs.aws.amazon.com/glue/latest/dg/add-job-streaming.html) 使用 Apache Spark 结构化流处理引擎，通过 [exactly-once](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#overview) 在微批处理作业中转换流式处理数据。您可以用 Python 或 Scala 创作 AWS Glue 流式处理作业。
+ [AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) 是一个方框和箭头风格的可视化界面，可助力刚接触 Apache Spark 编程的开发人员访问基于 Spark 的 ETL。

## 数据处理单元
<a name="dpu-worker-type"></a>

AWS Glue 使用数据处理单元 (DPU) 来测量分配给 ETL 任务的计算资源并计算成本。每个 DPU 相当于 4 个 vCPU 和 16 GB 内存。应根据 AWS Glue 任务的复杂性和数据量为其分配 DPU。[分配适当数量的 DPU](https://docs.aws.amazon.com/glue/latest/dg/monitor-debug-capacity.html#monitor-debug-capacity-fix) 可以让您在性能需求和成本限制之间取得平衡。

AWS Glue 提供了针对各种工作负载进行了优化的[多种 Worker 类型](https://docs.aws.amazon.com/glue/latest/dg/add-job.html#create-job)：
+ G.1X 或 G.2X（适用于大多数数据转换、联接和查询）
+ G.4X 或 G.8X（适用于要求较高的数据转换、聚合、联接和查询）
+ G.025X（适用于低容量和零星的数据流）
+ 标准（适用于 AWS Glue 1.0 或更早版本；不建议用于更高版本的 AWS Glue）

## 使用 Python Shell
<a name="python-shell"></a>

对于 Python Shell 作业，您可以使用 1 个 DPU 来使用 16 GB 的内存，也可以使用 0.0625 DPU 来使用 1 GB 的内存。Python Shell 适用于具有中小型数据集（最大约 10 GB）的基本 ETL 作业。

## 比较工作线程类型
<a name="compare-worker-types"></a>

下表显示了使用 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 或更高版本的流式处理作业。