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 ParquetORC。这些格式减少了 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.1XG.2X 工作器。每种工作器类型都提供不同级别的内存和处理能力。

对于通用 ETL 作业,您应该使用 标准工作器;而对于复杂事务或处理大型数据集,您可以选择 G.1XG.2X 工作器

调整 DPU 数量

AWS Glue 作业使用数据处理单元 (DPU) 来获得计算能力。为了显著提高性能,您应该分配正确数量的 DPU。您可以先分配最小数量的 DPU,然后如果您的作业需要更多资源,则可以增加数量。

监控和调整内存使用情况

AWS Glue 通过 AWS CloudWatch 指标提供内置内存监控。您可以实时监控内存消耗并根据需要调整作业参数。

优化作业并行性

AWS Glue 可以有效地将作业分配到多个节点。此功能可确保作业运行速度更快,从而显著提高性能。