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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

在 中添加作业AWS Glue

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

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

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

有三种工作类型 AWS Glue: 火花流媒体ETL,和 蟒蛇纹外套.

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

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

  • pythonshell作业将python脚本运行为外壳,并支持取决于您使用的胶粘版本的python版本。您可以使用这些作业来计划和运行不需要 Apache Spark 环境的任务。

定义作业属性

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

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

这些属性按照他们在 添加职位 向导 AWS Glue 控制台。

姓名

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

IAM 角色

指定用于对用于运行作业和访问数据存储的资源进行授权的 IAM 角色。有关在 AWS Glue 中运行作业的权限的更多信息,请参阅。Managing Access Permissions for AWS Glue Resources.

Type

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

Glue 版本

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

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

在未指定 Glue 版本的情况下,创建的作业默认为 Glue 0.9。

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

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

Scala 类名称

如果脚本用 Scala 编码,则必须提供类名称。默认类名称 AWS Glue 生成的脚本是 葡萄糖应用.

临时目录

提供工作目录的位置 Amazon S3 如何在临时中间结果中写入 AWS Glue 运行脚本。确认没有与路径中的临时目录同名的文件。此目录用于 AWS Glue 读取和写入 Amazon Redshift 而且通过某些 AWS Glue 转换。

注意

控制台下未列出源和目标 详情 工作选项卡。检查脚本以查看源和目标详细信息。

高级属性
作业书签

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

监控选项
作业指标

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

连续日志记录

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

Spark UI

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

标签

使用 标签键 和可选 标签值. 创建标签键后,它们是只读的。对某些资源使用标签可帮助您整理和标识资源。有关更多信息,请参阅 AWS Glue 中的 AWS 标签.

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

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

服务器端加密

如果选择此选项,当 ETL 作业写入 Amazon S3 时,数据将会使用 SSE-S3 加密进行静态加密。两者都是 Amazon S3 数据目标以及写入到 Amazon S3 临时目录已加密。此选项作为作业参数传递。有关详细信息,请参阅 使用与AmazonS3管理的加密密钥(SSE-S3)的服务器端加密保护数据Amazon Simple Storage Service 开发人员指南.

重要

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

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

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

工作线程类型

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

  • Standard – 当您选择此类型时,您还可以为 最大容量. 最大容量是此作业运行时可分配的 AWS Glue 数据处理单元 (DPU) 的数量。DPU 是对处理能力的相对度量,它由 4 个 vCPU 的计算容量和 16GB 内存组成。TheThethe Standard 工作人员类型有50GB磁盘和2个执行器。

  • G.1X – 当您选择此类型时,您还可以为 员工数量. 每个工作线程映射到 1 个 DPU(4 个 vCPU,16 GB 内存,64 GB 磁盘),并且每个工作线程提供 1 个执行器。我们建议内存密集型作业使用该工作线程类型。这是默认值 员工类型 适用于胶水2.0版作业。

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

您将根据用于运行 ETL 作业的 DPU 数量按小时支付费用。有关详细信息,请参阅 AWSGLUE定价页面.

如果要使用控制台配置作业,请使用控制台配置作业,并指定 员工类型标准最大容量 设置和 员工数量 成为 最大容量 -1。如果您使用 AWS Command Line Interface (AWS CLI)或AWSSDK,您可以指定 最大容量 或者您可以同时指定 员工类型员工数量.

对于胶水2.0版作业,您不能指定 最大容量. 相反,您应该指定 员工类型员工数量. 有关详细信息,请参阅 职位.

工作线程数

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

您可以定义的最大工作人员数为299人 G.1X、和149 G.2X.

最大容量

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

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

对于胶水2.0版作业,您不能指定 最大容量. 相反,您应该指定 员工类型员工数量. 有关详细信息,请参阅 职位.

最大并发数

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

作业超时

设置最大执行时间 (以分钟为单位)。默认为 2880 分钟。如果此限制大于执行时间,则作业运行状态更改为“TIMEOUT”(超时)。

延迟通知阈值

设置发送延迟通知之前的阈值(以分钟为单位)。您可以设置此阈值,以便在 RUNNINGSTARTING,或 STOPPING 工作运行超出预期分钟数。

重试次数

指定 AWS Glue 在失败时自动重新启动作业的次数(从 0 到 10)。

作业参数

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

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

不可覆盖的作业参数

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

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

选择使用 AWS Glue Data Catalog Hive转移。TheThethe IAM 工作所使用的角色必须 glue:CreateDatabase 权限。在 Data Catalog 中创建一个名为“default”的数据库(如果该数据库不存在)。

数据源

选择一个 Data Catalog 表。

转换类型

选择以下选项之一

更改架构

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

查找匹配的记录

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

Target

执行以下任一操作

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

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

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

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