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 作业中最后成功处理的数据。您可以使用作业书签来避免重新处理已处理的数据。这样可以节省时间和资源。

  • 当您处理增量数据时,始终启用作业书签。
  • 确保为 ETL 作业使用的存储在 Amazon S3 或数据库中的数据集正确配置作业书签。

管理 AWS Glue 中的内存和资源分配

高效的资源管理可确保最佳性能、成本效率并防止作业失败。AWS Glue 提供各种方法来管理 ETL 作业的内存和资源分配。

选择合适的 Worker 类型

AWS Glue 允许您根据工作负载需求从三种不同的 Worker 类型中进行选择:标准型、G.1XG.2X Worker。每种 Worker 类型都提供不同级别的内存和处理能力。

对于通用 ETL 作业,您应该使用标准型 Worker,而对于复杂的交易或处理大型数据集,您可以选择G.1XG.2X Worker

调整 DPU 的数量

AWS Glue 作业使用数据处理单元 (DPU) 来进行计算。为了显著提高性能,您应该分配适量的 DPU。您可以先分配最少数量的 DPU,然后根据作业需求增加 DPU。

监控和调整内存使用情况

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

优化作业并行性

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

广告