AWS Glue - 性能优化
优化 Glue ETL 作业的最佳实践
为了提高效率并降低数据处理工作流的成本,您必须优化 AWS Glue 提取、转换和加载 (ETL) 作业。
在本章中,我们重点介绍了一些优化 AWS Glue ETL 作业的最佳实践。
优化 AWS Glue 中的数据分区
数据分区是加快查询时间和减少 ETL 作业总体处理时间的重要因素。以下是优化数据分区的最佳实践 −
- 您可以使用逻辑文件夹结构(例如基于日期的分区(例如,/year=2024/month=09/day=26/))在 Amazon S3 中组织数据。
- 您可以在 AWS Glue 中使用动态框架来自动检测分区并仅加载相关数据。它将提高您的作业性能。
- 您应该避免创建太多小分区。这会增加处理成本。
优化 AWS Glue 中的 I/O 操作
输入/输出操作也在 ETL 作业的性能中发挥着重要作用。让我们看看如何优化 I/O 操作 −
- 您应该将数据转换为优化的列格式,如 Apache Parquet 或 ORC。这些格式减少了 I/O,因为它们只加载处理所需的相关列。
- 您可以使用 Amazon S3 分段上传 和 并行处理 来加快 AWS 服务之间的数据传输。
使用下推谓词
下推谓词有助于在 ETL 过程的早期过滤数据。这意味着,只处理相关的数据子集。当您处理大型数据集时,它很有用。
按照下面给出的步骤优化下推谓词 −
- 您应该直接在数据源处应用过滤器。它将最大限度地减少下游处理的数据量。例如,您可以在将大型数据集加载到 Glue 作业之前,从中筛选出一些特定的行。
- 您可以在 ETL 脚本中使用 push_down_predicate 参数。它仅加载转换过程所需的数据。
优化 AWS Glue 中的转换
提高性能的关键之一是降低转换的复杂性。AWS Glue 提供内置转换,但下面给出的一些技术可以使 ETL 作业更高效。
- 尝试避免冗余转换,确保仅在必要时应用连接、过滤或聚合等操作。
- 当其中一个数据集较小时,您可以使用广播连接。此技术可加快连接操作。
在 AWS Glue 中启用作业书签
AWS Glue 作业书签旨在跟踪 ETL 作业中最后成功处理的数据。您可以使用作业书签避免重新处理已处理的数据。这样可以节省时间和资源。
- 处理增量数据时,始终启用作业书签。
- 确保为存储在 Amazon S3 中的数据集或 ETL 作业使用的数据库正确配置作业书签。
在 AWS Glue 中管理内存和资源分配
高效的资源管理可确保最佳性能、成本效益并防止作业失败。 AWS Glue 提供了多种方法来管理 ETL 作业的内存和资源分配。
选择正确的工作器类型
AWS Glue 允许您根据工作负载需求从三种不同的工作器类型中进行选择:标准、G.1X 和 G.2X 工作器。每种工作器类型都提供不同级别的内存和处理能力。
对于通用 ETL 作业,您应该使用 标准工作器;而对于复杂事务或处理大型数据集,您可以选择 G.1X 或 G.2X 工作器
调整 DPU 数量
AWS Glue 作业使用数据处理单元 (DPU) 来获得计算能力。为了显著提高性能,您应该分配正确数量的 DPU。您可以先分配最小数量的 DPU,然后如果您的作业需要更多资源,则可以增加数量。
监控和调整内存使用情况
AWS Glue 通过 AWS CloudWatch 指标提供内置内存监控。您可以实时监控内存消耗并根据需要调整作业参数。
优化作业并行性
AWS Glue 可以有效地将作业分配到多个节点。此功能可确保作业运行速度更快,从而显著提高性能。