在 Amazon Glue 中添加作业 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon Glue 中添加作业

Amazon Glue 作业将封装连接到源数据的脚本,处理该脚本,然后将其写入数据目标。通常,作业运行提取、转换和加载 (ETL) 脚本。作业还可以运行通用 Python 脚本(Python shell 作业)。Amazon Glue 触发器 可以根据计划或事件或者按需启动作业。您可以监控作业运行以了解运行时指标(例如完成状态、持续时间和开始时间)。

您可以使用 Amazon Glue 生成的脚本,也可以提供您自己的脚本。使用源架构和目标位置或架构,Amazon Glue代码生成器可以自动创建 Apache Spark API (PySpark) 脚本。您可以将此脚本用作起点,并对其进行编辑以满足您的目标。

Amazon Glue 可以用多种数据格式编写输出文件,包括 JSON、CSV、ORC(优化的行列式)、Apache Parquet 和 Apache Avro。对于某些数据格式,可以编写常见的压缩格式。

Amazon Glue 中有三种类型的作业:SparkStreaming ETLPython shell

  • Spark 作业在由 Amazon Glue管理的 Apache Spark 环境中运行。它将批量处理数据。

  • 流式处理 ETL 作业与 Spark 作业类似,只不过前者在数据流上执行 ETL。它使用 Apache Spark Structured Streaming 框架。某些 Spark 作业功能不可用于流式处理 ETL 作业。

  • Python shell 任务将 Python 脚本作为 shell 运行,支持的 Python 版本具体取决于您使用的 Amazon Glue 版本。您可以使用这些作业来计划和运行不需要 Apache Spark 环境的任务。

定义 Spark 作业的作业属性

当您在 Amazon Glue 控制台中定义任务时,您会提供属性的值来控制 Amazon Glue 的运行时环境。

以下列表描述了 Spark 作业的属性。有关 Python Shell 作业的属性,请参阅 定义 Python shell 作业的作业属性。有关流式处理 ETL 作业的属性,请参阅 定义串流 ETL 作业的作业属性

属性将按照在 Amazon Glue 控制台上的 Add job (添加任务) 向导中显示的顺序列出。

名称

提供最大长度为 255 个字符的 UTF-8 字符串。

描述

提供最多 2048 个字符的可选描述。

IAM 角色

指定用来为用于运行任务和访问数据存储的资源进行授权的 IAM 角色。有关在 Amazon Glue 中运行作业的权限的更多信息,请参阅 适用于 Amazon Glue 的 Identity and Access Management

类型

ETL 任务的类型。这是根据您选择的数据源类型自动设置的。

Amazon Glue 版本

Amazon Glue 版本决定了可用于任务的 Apache Spark 和 Python 的版本,如下表中所述。

Amazon Glue 版本 支持的 Spark 和 Python 版本
4.0
  • Spark 3.3.0

  • Python 3.10

3.0
  • Spark 3.1.1

  • Python 3.7

2.0
  • Spark 2.4.3

  • Python 3.7

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

0.9
  • Spark 2.2.1

  • Python 2.7

工作线程类型

以下工作线程类型可供使用:

Amazon Glue 工作人员可用的资源以 DPU 为单位进行衡量。DPU 是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16GB 内存组成。

  • G.1X – 当您选择这种类型时,您还提供了 Number of workers (工件数量) 的值。每个工作线程映射到 1 个 DPU(4 个 vCPU,16GB 内存)和 84GB 磁盘(大约 34GB 可用空间)。我们建议将这种工作线程类型用于数据转换、联接和查询等工作负载,以提供一种可扩展且经济实惠的方式来运行大多数作业。

  • G.2X – 当您选择这种类型时,您还提供了 Number of workers (工件数量) 的值。每个工作线程映射到 2 个 DPU(8 个 vCPU,32GB 内存)和 128GB 磁盘(大约 77GB 可用空间)。我们建议将这种工作线程类型用于数据转换、联接和查询等工作负载,以提供一种可扩展且经济实惠的方式来运行大多数作业。

  • G.4X – 当您选择这种类型时,您还提供了 Number of workers (工件数量) 的值。每个工作线程映射到 4 个 DPU(16 个 vCPU,64 GB 内存)和 256GB 磁盘(大约 235GB 可用空间)。对于工作负载包含要求最高的转换、聚合、联接和查询的作业,我们建议使用这种工作线程类型。此工作人员类型仅适用于以下 Amazon 区域的 3.0 或更高Amazon Glue版本的 Spark ETL 职位:美国东部(俄亥俄州)、美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)、加拿大(中部)、欧洲(法兰克福)、欧洲(爱尔兰)和欧洲(斯德哥尔摩)。

  • G.8X – 当您选择这种类型时,您还提供了 Number of workers (工件数量) 的值。每个工作线程映射到 8 个 DPU(32 个 vCPU,128 GB 内存)和 512GB 磁盘(大约 487GB 可用空间)。对于工作负载包含要求最高的转换、聚合、联接和查询的作业,我们建议使用这种工作线程类型。此工作器类型仅适用于 3.0 或更高Amazon Glue版本的 Spark ETL 作业,其 Amazon 区域与该G.4X工作人员类型支持的区域相同。

  • G.025X – 当您选择这种类型时,您还提供了 Number of workers (工件数量) 的值。每个工作线程映射到 0.25 个 DPU(2 个 vCPU,4GB 内存)和 84GB 磁盘(大约 34GB 可用空间)。我们建议为低容量串流任务使用此 Worker 类型。此 Worker 类型仅适用于 Amazon Glue 版本 3.0 串流任务。

您将根据用于运行 ETL 作业的 DPU 数量按小时支付费用。有关更多信息,请参阅 Amazon Glue 价格页面

对于 Amazon Glue 版本 1.0 或更低版本的任务,当您使用控制台配置任务并指定 Standard (标准)Worker type (工件类型) 时,则会设置 Maximum capacity (最大容量),并且 Number of workers (工件数量) 会成为 Maximum capacity (最大容量) 值 - 1。如果您使用 Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK,则可以指定最大容量参数,也可以同时指定工作器类型工作人员数量

对于 Amazon Glue 2.0 版或更高版本的作业,则不能指定最大容量。相反,您应该指定 Worker type (工件类型)Number of workers (工件数量)

Language

ETL 脚本中的代码定义了作业的逻辑。该脚本可以用 Python 或 Scala 进行编码。您可以选择作业运行的脚本是由 Amazon Glue 生成还是由您提供。您需要在 Amazon Simple Storage Service(Amazon S3)中提供脚本名称和位置。确认没有与路径中的脚本目录同名的文件。要了解有关编写脚本的更多信息,请参阅Amazon Glue 编程指南

要求的工作人员人数

对于大多数工作线程类型,您必须指定作业运行时分配的工作线程数。

作业书签

指定当作业运行时,Amazon Glue 如何处理状态信息。您可以让它记住之前处理过的数据、更新状态信息或忽略状态信息。有关更多信息,请参阅使用作业书签跟踪已处理的数据

弹性执行

使用 Amazon Studio 或 API 配置作业时,可以指定标准或灵活的任务执行类。您的任务可能具有不同程度的优先级和时间敏感度。标准执行类非常适合需要快速任务启动和专用资源的时间敏感型工作负载。

灵活的执行类适用于非紧急任务,例如预生产任务、测试和一次性数据加载。使用 Amazon Glue 版本 3.0 或更高版本以及 G.1XG.2X 工作线程类型的任务支持灵活的任务运行。

灵活的任务运行基于在任何时间点运行的工作线程数量计费。对于正在运行的灵活任务运行,可以添加或移除工作线程数。每个工作线程将贡献它在任务运行期间所运行的时间,而不是计费为 Max Capacity * Execution Time 的简单计算。账单是(Number of DPUs per worker * time each worker ran)的总和。

有关更多信息,请参阅 Amazon Studio 中的帮助面板,或任务任务运行

重试次数

指定 Amazon Glue 在失败时自动重新启动任务的次数(从 0 到 10)。达到超时限制的任务不会重新启动。

作业超时

设置最大执行时间 (以分钟为单位)。批处理任务的默认值为 2880 分钟(48 小时)。当任务执行时间超过此限制时,任务运行状态更改为 TIMEOUT

对于无限期运行的流式传输任务,请将该值留空,该值是串流任务的默认值。

作业超时的最佳实践

任务按执行时间计费。为避免意外收费,请配置与任务预期执行时间相适应的超时值。

高级属性
脚本文件名

您的作业的唯一脚本名称。不能命名为无标题作业

脚本路径

脚本的 Amazon S3 位置。路径必须采用 s3://bucket/prefix/path/ 格式。它必须以斜杠 (/) 结尾,并且不包含任何文件。

作业指标

此任务运行时开启或关闭创建 Amazon CloudWatch 指标。要查看分析数据,则必须启用此选项。有关如何启用和可视化指标的更多信息,请参阅 作业监控和调试

Job 可观察性指标

当此作业运行时,开启创建其他可观测性 CloudWatch 指标的功能。有关更多信息,请参阅使用 Amazon Glue 可观测性指标进行监控

连续日志记录

开启持续登录到 Amazon CloudWatch。如果未启用此选项,则只有在作业完成后日志才可用。有关更多信息,请参阅 Amazon Glue 任务的连续日志记录

Spark UI

允许使用 Spark UI 监控此任务。有关更多信息,请参阅为 Amazon Glue 作业启用 Apache Spark Web UI

Spark 用户界面日志路径

启用 Spark 用户界面时写入日志的路径。

Spark 用户界面日志记录和监控配置

请选择以下选项之一:

  • 标准:使用 Amazon Glue 作业运行 ID 作为文件名写入日志。在 Amazon Glue 控制台中打开 Spark 用户界面监控。

  • 旧版:使用 “spark-application-{timestamp}” 作为文件名写入日志。请勿打开 Spark 用户界面监控功能。

  • 标准和旧版:将日志写入标准位置和传统位置。在 Amazon Glue 控制台中打开 Spark 用户界面监控。

最大并发数量

设置此作业允许的并发运行的最大数量。默认 为 1。达到此阈值时,将返回一个错误。可以指定的最大值由服务限制控制。例如,如果在启动新实例时,作业的前一运行仍在运行,则可能需要返回错误以防止同一作业的两个实例同时运行。

临时路径

在 Amazon S3 中提供工作目录的位置,以便当 Amazon Glue 运行脚本时在该位置写入临时中间结果。确认没有与路径中的临时目录同名的文件。在 Amazon Glue 读取和写入 Amazon Redshift 时使用此目录,或者通过某些 Amazon Glue 转换使用。

注意

如果区域中尚不存在存储桶,则 Amazon Glue 会为任务创建临时存储桶。此存储桶可能允许公开访问。您可以修改 Amazon S3 中的存储桶以设置公开访问数据块,也可以在该区域中的所有任务完成之后删除存储桶。

延迟通知阈值(分钟)

设置发送延迟通知之前的阈值(以分钟为单位)。您可以设置此阈值,以在 RUNNINGSTARTINGSTOPPING 任务运行超过预期的分钟数时发送通知。

安全配置

从列表中选择安全配置。安全配置会指定如何对 Amazon S3 目标上的数据加密:不加密、使用 Amazon KMS 托管式密钥的服务器端加密(SSE-KMS)或者使用 Amazon S3 托管式加密密钥的服务器端加密(SSE-S3)。

服务器端加密

如果选择此选项,在将 ETL 任务写入 Amazon S3 时,数据将会使用 SSE-S3 加密进行静态加密。Amazon S3 数据目标和任何写入 Amazon S3 临时目录的数据都将被加密。此选项作为作业参数传递。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的借助使用 Amazon S3 托管式加密密钥的服务器端加密 (SSE-S3) 保护数据

重要

如果指定了安全配置,则忽略此选项。

使用 Glue 数据目录作为 Hive 元存储

选择此项以使用 Amazon Glue 数据目录作为 Hive 元存储。用于任务的 IAM 角色必须具有 glue:CreateDatabase 权限。在数据目录中创建一个名为“default”的数据库(如果该数据库不存在)。

连接

选择 VPC 配置以访问位于您的虚拟私有云 (VPC) 中的 Amazon S3 数据源。您可以在中创建和管理网络连接 Amazon Glue。有关更多信息,请参阅连接到数据

Python 库路径、相关 JAR 路径和引用文件路径

如果脚本需要这些选项,请指定。当您定义任务时,可以为这些选项定义使用逗号分隔的 Amazon S3 路径。当您运行任务时,可以覆盖这些路径。有关更多信息,请参阅提供您自己的自定义脚本

任务参数

作为命名参数传递给脚本的一组键值对。这些是在运行脚本时使用的默认值,但您可以在触发器中或运行任务时覆盖它们。您必须为键名使用前缀 --;例如:--myKey。使用时,您可以将作业参数作为地图传递 Amazon Command Line Interface。

有关示例,请参阅在 Amazon Glue 中传递和访问 Python 参数中的 Python 参数。

标签

使用 Tag key (标签键) 和可选的 Tag value (标签值) 来标记作业。创建标签键后,它们是只读的。对某些资源使用标签可帮助您整理和标识资源。有关更多信息,请参阅Amazon 标签在 Amazon Glue

针对访问 Lake Formation 托管表的作业的限制

在创建从管理的表中读取或写入的作业时,请记住以下注意事项和限制 Amazon Lake Formation: