- AWS Glue 教程
- AWS Glue - 首页
- AWS Glue - 简介
- AWS Glue - 入门指南
- AWS Glue - 数据目录
- AWS Glue - Amazon S3 集成
- AWS Glue - 爬虫
- AWS Glue - 性能优化
- AWS Glue - 成本优化
- AWS Glue 资源
- AWS Glue - 快速指南
- AWS Glue - 资源
- AWS Glue - 讨论
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 作业中最后成功处理的数据。您可以使用作业书签来避免重新处理已处理的数据。这样可以节省时间和资源。
- 当您处理增量数据时,始终启用作业书签。
- 确保为 ETL 作业使用的存储在 Amazon S3 或数据库中的数据集正确配置作业书签。
管理 AWS Glue 中的内存和资源分配
高效的资源管理可确保最佳性能、成本效率并防止作业失败。AWS Glue 提供各种方法来管理 ETL 作业的内存和资源分配。
选择合适的 Worker 类型
AWS Glue 允许您根据工作负载需求从三种不同的 Worker 类型中进行选择:标准型、G.1X 和 G.2X Worker。每种 Worker 类型都提供不同级别的内存和处理能力。
对于通用 ETL 作业,您应该使用标准型 Worker,而对于复杂的交易或处理大型数据集,您可以选择G.1X 或 G.2X Worker
调整 DPU 的数量
AWS Glue 作业使用数据处理单元 (DPU) 来进行计算。为了显著提高性能,您应该分配适量的 DPU。您可以先分配最少数量的 DPU,然后根据作业需求增加 DPU。
监控和调整内存使用情况
AWS Glue 通过 AWS CloudWatch 指标提供内置内存监控功能。您可以实时监控内存消耗,并根据需要调整作业参数。
优化作业并行性
AWS Glue 可以高效地将作业分布到多个节点。此功能可确保作业运行速度更快,从而显著提高性能。