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

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

在 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:Spark流式处理 ETL, 和Python Shell

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

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

  • Python 外壳作业运行 Python 脚本作为 shell,并支持依赖于Amazon Glue版本。您可以使用这些作业来计划和运行不需要 Apache Spark 环境的任务。

定义作业属性

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

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

属性按照它们在添加作业打开向导Amazon Glue控制台。

名称

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

IAM 角色

指定用于对运行作业和访问数据存储所用的资源进行授权的 IAM 角色。有关在 Amazon Glue 中运行作业的权限的更多信息,请参阅管理的访问权限AmazonGlue 资源

类型

指定要运行的作业环境的类型:

Amazon Glue 版本

Amazon Glue版本确定可用于作业的 Apache Spark 和 Python 版本,如下表中所述。

Amazon Glue 版本 支持的 Spark 和 Python 版本
0.9
  • Spark 2.2.1

  • Python 2.7

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

2.0
  • Spark 2.4.3

  • Python 3.7

创建的作业未指定Amazon Glue默认值为Amazon Glue0.9.

此作业运行(生成的或自定义的脚本)

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

Scala 类名称

如果脚本用 Scala 编码,则必须提供类名称。Amazon Glue 生成脚本的默认类名称是 GlueApp

临时目录

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

注意

控制台 Details (详细信息) 选项卡中未列出作业的源和目标。检查脚本以查看源和目标详细信息。

高级属性
作业书签

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

监控选项
作业指标

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

连续日志记录

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

Spark UI

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

标签

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

安全配置、脚本库和作业参数
安全配置

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

服务器端加密

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

重要

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

Python 库路径、从属 jar 路径和引用的文件路径

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

工作线程类型

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

  • Standard— 当您选择这种类型时,您还提供最大容量。最大容量是此作业运行时可分配的 Amazon Glue 数据处理单元 (DPU) 的数量。DPU 是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16GB 内存组成。Standard 工作线程类型有一个 50 GB 的磁盘和 2 个执行器。

  • G.1X— 当您选择这种类型时,您还提供工作线程数。每个工作线程映射到 1 个 DPU(4 个 vCPU,16 GB 内存,64 GB 磁盘),并且每个工作线程提供 1 个执行器。我们建议内存密集型作业使用该工作线程类型。这是默认值工作线程类型对于 来说为Amazon Glue版本 2.0。

  • G.2X— 当您选择这种类型时,您还提供工作线程数。每个工作线程映射到 2 个 DPU(8 个 vCPU,32 GB 内存,128 GB 磁盘),并且每个工作线程提供 1 个执行器。我们建议内存密集型作业和运行 ML 转换的作业使用该工作线程类型。

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

适用于Amazon Glue版本 1.0 或更早版本的作业,当您使用控制台配置作业并指定工作线程类型标准最大容量被设置,并且工作线程数成为值的最大容量-1. 如果您使用Amazon命令行界面 (AmazonCLI)或AmazonSDK,您可以指定最大容量参数,或者您可以指定工作线程类型工作线程数

适用于Amazon Glue版本 2.0 作业,则无法改为指定最大容量。相反,您应该指定工作线程类型工作线程数。有关更多信息,请参阅作业

工作线程数

对于 G.1X 和 G.2X 工作线程类型,您必须指定作业运行时分配的工作线程数。

可定义的工作线程的最大数目是 299(对于 G.1X 而言)和 149(对于 G.2X 而言)。

最大容量

适用于Amazon Glue版本 1.0 或更早版本的作业,使用标准工作线程类型,您必须指定Amazon Glue数据处理单元 (DPU),可在此作业运行时分配。DPU 是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16GB 内存组成。您将根据用于运行 ETL 作业的 DPU 数量按小时支付费用。有关更多信息,请参阅 Amazon Glue 定价页

选择 2 到 100 之间的整数。默认值为 10。此作业类型不能具有小数 DPU 分配。

适用于Amazon Glue版本 2.0 作业,则无法改为指定最大容量。相反,您应该指定工作线程类型工作线程数。有关更多信息,请参阅作业

最大并发数

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

作业超时

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

对于无限期运行的流式作业,请将该值留空,该值是流式处理作业的默认值。

延迟通知阈值

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

重试次数

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

作业参数

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

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

不可覆盖的作业参数

一组不能在触发器中或运行作业时覆盖的特殊作业参数。这些键值对会作为命名参数传递给脚本。这些值会在运行脚本时使用,并且您不能在触发器中或运行作业时覆盖它们。您必须为键名使用前缀 --;例如 --myKeygetResolvedOptions() 在单个映射中返回作业参数和不可覆盖的作业参数。有关更多信息,请参阅 使用 getResolvedOptions 访问参数

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

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

数据源

选择 “数据目录” 表。

转换类型

选择以下选项之一:

更改架构

ApplyMapping 转换添加到生成的脚本。允许您更改源数据的架构并创建新的目标数据集。

查找匹配的记录

允许您选择机器学习转换,用来在您的源数据中查找匹配的记录。

目标

请执行下列操作之一:

  • 要指定 Amazon S3 路径或 JDBC 数据存储库,请选择在数据目标中创建表

  • 要指定一个目录表,请选择在数据目录中使用表格并更新您的数据目标

对于 Amazon S3 目标位置,请提供您的输出写入的目录的位置。确认没有与路径中的目标路径目录同名的文件。对于 JDBC 目标,如果指定的对象不存在,Amazon Glue 根据需要创建架构对象。

有关如何使用 Amazon Glue 控制台添加作业的更多信息,请参阅在 Amazon Glue 控制台上处理作业