使用 AWS Glue Studio 管理 ETL 任务 - AWS Glue

使用 AWS Glue Studio 管理 ETL 任务

您可以使用 AWS Glue Studio 中的简单图形界面,管理您的 ETL 任务。使用导航菜单,选择 Jobs (任务) 查看 Jobs (任务) 页面。在此页面上,您可以看到您使用 AWS Glue Studio 或 AWS Glue 控制台创建的所有任务。您可以在此页面上查看、管理和运行您的任务。

启动任务运行

在 AWS Glue Studio 中,您可以按需运行您的任务。任务可以多次运行,每次您运行任务时,AWS Glue 会收集有关任务活动和绩效的信息。此信息称为任务运行,由任务运行 ID 标识。

您可以通过以下方式在 AWS Glue Studio 中启动任务:

  • Jobs (任务) 页面上,选择要启动的任务,然后选择 Run job (运行任务) 按钮。

  • 如果您在可视化编辑器中查看任务并且任务已保存,则可以选择 Run (运行) 按钮启动任务运行。

有关任务运行的更多信息,请参阅《AWS Glue 开发人员指南》中的在 AWS Glue Glue 控制台上处理任务

计划任务运行

在 AWS Glue Studio 中,您可以创建计划,让您的任务在特定时间运行。您可以指定约束条件,例如任务运行次数、它们在一周中的哪几天运行,以及具体在什么时间运行。这些约束基于 cron,与 cron 具有相同的限制。例如,如果您选择在每月第 31 天运行您的任务,请记住,有些月份没有 31 天。有关 cron 的更多信息,请参阅《AWS Glue 开发人员指南》中的 Cron 表达式

按照计划运行任务
  1. 使用以下某种方法创建任务计划:

    • Jobs (任务) 页面上,选择要为其创建计划的任务,选择 Actions (操作),然后选择 Schedule job (计划任务)

    • 如果您在可视化编辑器中查看任务并且任务已保存,则选择 Schedules (计划) 选项卡。然后,选择 Create Schedule (创建计划)

  2. Schedule job run (计划任务运行) 页面上,输入以下信息:

    • Name (名称):输入您的任务计划的名称。

    • Frequency (频率):输入任务计划的频率。您可以选择以下选项:

      • Hourly (每小时):任务将每小时运行一次,从特定的分钟开始。您可以指定任务运行小时的具体 Minute (分钟)。默认情况下,当您选择每小时时,任务将在小时之初(分钟 0)开始运行。

      • Daily (每天):任务将每天运行,从某个时间开始。您可以指定任务运行小时的具体 Minute (分钟) 以及任务的 Start hour (开始小时)。小时使用 23 小时制时钟指定,其中您使用数字 13 到 23 表示下午小时。分钟和小时的默认值为 0,这意味着如果您选择 Daily (每天),则默认情况下,任务将在午夜运行。

      • Weekly (每周):任务将在每周的一天或多天内运行。除前面针对“Daily (每天)”介绍的相同设置外,您还可以选择任务运行的具体周时间。您可以选择一天或多天。

      • Monthly (每月):任务将在每月的特定日期运行。除前面针对“Daily (每天)”介绍的相同设置外,您还可以选择任务运行的具体日期。将日期指定为 1 到 31 之间的数值。如果您选择一个月中不存在的日期,例如 2 月 30 日,则任务在该月不会运行。

      • 自定义:使用 cron 语法输入任务计划的表达式。Cron 表达式允许您创建更复杂的计划,例如每月的最后一天(而不是该月的特定日期),或者每三个月的第 7 天第 21 天

        请参阅《AWS Glue 开发人员指南》中的 Cron 表达式

    • Description (描述):您可以有选择地为任务计划输入描述。如果您计划为多项任务使用相同的计划,则描述有助于更轻松地确定任务计划的用途。

  3. 选择 Create schedule (创建计划),保存任务计划。

  4. 创建计划后,控制台页面的顶部会显示一条成功消息。您可以选择此横幅中的 Job details (任务详细信息),查看任务详细信息。这样将打开可视化任务编辑器页面,其中 Schedules (计划) 选项卡处于选中状态。

管理任务计划

为任务创建计划后,您可以在可视化编辑器中打开任务,然后选择 Schedules (任务) 选项卡以管理计划。

在可视化编辑器的 Schedules (计划) 选项卡,您可以执行以下任务:

  • 创建新计划

    选择 Create schedule (创建计划),然后输入计划的信息,如 计划任务运行 中所述。

  • 编辑现有计划。

    选择要编辑的计划,然后依次选择 Action (操作)Edit schedule (编辑计划)。当您选择编辑现有计划时,Frequency (频率) 显示为 Custom (自定义),并且计划显示为 cron 表达式。您可以修改 cron 表达式,也可以使用 Frequency (频率) 按钮指定新计划。完成更改后,选择 Update schedule (更新计划)

  • 暂停活动计划。

    选择活动计划,然后依次选择 Action (操作)Pause schedule (暂停计划)。计划会立即停用。选择刷新(重新加载)按钮,查看更新的任务计划状态。

  • 恢复暂停的计划。

    选择停用计划,然后依次选择 Action (操作)Resume schedule (恢复计划)。计划会立即激活。选择刷新(重新加载)按钮,查看更新的任务计划状态。

  • 删除计划。

    选择要删除的计划,然后依次选择 Action (操作)Delete schedule (删除计划)。计划会立即删除。选择刷新(重新加载)按钮,查看更新的任务计划列表。该计划将显示 Deleting (删除) 状态,直到它完全删除。

停止任务运行

您可以在任务完成任务运行之前将其停止。如果您知道任务未正确配置,或者任务花费太长时间而未完成,则可以选择此选项。

Monitoring (监控) 页面中的 Job runs (任务运行) 列表中,选择要停止的任务,然后依次选择 Actions (操作)Stop run (停止运行)

查看您的作业

您可以在 Jobs (任务) 页面查看您的所有任务。您可以在导航窗格中选择 Jobs (任务) 以访问此页面。

Jobs (任务) 页面上,您可以查看账户中创建的所有任务。Your jobs (您的任务) 列表会显示任务名称、类型、上次任务运行的状态,以及任务创建和上次修改的日期。您可以选择任务名称,查看相关任务的详细信息。

您还可以使用监控控制面板查看所有任务。您可以在导航窗格中选择 Monitoring (监控) 以访问控制面板。

自定义任务显示

您可以在 Jobs (任务) 页面的 Your jobs (您的任务) 部分中自定义任务的显示方式。此外,您可以在搜索文本字段中输入文本,以便仅显示名称包含该文本的任务。

如果选择 Your jobs (您的任务) 部分中的设置图标 A gear symbol ,您可以自定义 AWS Glue Studio 显示表中信息的方式。您可以选择在显示中将文本换行,更改页面上显示的任务数,以及指定要显示的列。

查看最近任务运行的信息

在源位置添加新数据时,任务可以多次运行。每次运行任务时,都会为任务运行分配唯一 ID,并收集有关该任务运行的信息。您可以使用以下方法查看此类信息:

  • 选择可视化编辑器的 Runs (运行) 选项卡,查看当前显示的任务的任务运行信息。

    Runs (运行) 选项卡(Recent job runs (最近任务运行) 页面)上,每次任务运行都有一张卡。Runs (运行) 选项卡上显示的信息包括:

    • 任务运行 ID

    • 此任务的尝试运行次数

    • 任务运行的状态

    • 任务运行的开始和结束时间

    • 任务运行的运行时

    • 指向任务日志文件的链接

    • 指向任务日志文件的链接

    • 失败任务返回的错误

  • 您可以选择一个任务运行以查看有关任务的其他信息,包括以下信息:

您可以选择查看详细信息,以在作业运行详细信息页面上查看类似的信息。您还可以通过监控页面导航到作业运行详细信息页面。在导航窗格中,选择 Monitoring (监控)。向下滚动到 Job runs (任务运行) 列表。选择任务,然后选择 View run details (查看运行详细信息)。内容在查看任务运行的详细信息中有描述。

有关任务日志的更多信息,请参阅查看任务运行日志

查看任务脚本

提供任务中所有节点的信息后,AWS Glue Studio 会生成任务使用的脚本,用于从源中读取数据、转换数据以及将数据写入目标位置。如果保存任务,您可以随时查看此脚本。

查看任务生成的脚本
  1. 在导航窗格中,选择 Jobs (任务)

  2. Jobs (任务) 页面中的 Your Jobs (您的任务) 列表中,选择要查看的任务的名称。或者,您可以在列表中选择一项任务,选择 Actions (操作) 菜单,然后选择 Edit job (编辑任务)

  3. 在可视化编辑器页面上,选择 Script (脚本) 选项卡以查看任务任务脚本。

    如果您要编辑任务脚本,请参阅AWS Glue 编程指南

修改任务属性

任务图中的节点定义了任务执行的操作,但也可以为任务配置多个属性。这些属性用于确定任务运行环境、任务使用的资源、阈值设置、安全设置等。

自定义任务运行环境
  1. 在导航窗格中,选择 Jobs (任务)

  2. Jobs (任务) 页面中的 Your Jobs (您的任务) 列表中,选择要查看的任务的名称。

  3. 在可视化编辑器页面上,选择任务编辑窗格顶部的 Job details (任务详细信息)

  4. 根据需要修改任务属性。

    有关任务属性的更多信息,请参阅《AWS Glue 开发人员指南》中的定义任务属性

  5. 如果您需要指定以下附加任务属性,则展开 Advanced properties (高级属性) 部分:

    • Script filename (脚本文件名) – 在 Amazon S3 中存储任务脚本的文件的名称。

    • Script path (脚本路径) – 任务脚本的 Amazon S3 存储位置。

    • Job metrics (任务指标) –(不适用于 Python Shell 任务)当此任务运行时启用 Amazon CloudWatch 指标创建。

    • Continuous logging (连续日志记录) –(不适用于 Python Shell 任务)打开 CloudWatch 的连续日志记录,以便在任务完成之前可以查看日志

    • Spark UISpark UI logs path (Spark UI 日志路径) –(不适用于 Python Shell 任务)使用 Spark UI 监控此任务,并指定 Spark UI 日志的位置。

    • Maximum concurrency (最大并发) – 设置此任务业允许的并发运行的最大数量。

    • Temporary path (临时路径) – 在 Amazon S3 中提供工作目录的位置,以便当 AWS Glue 运行脚本时在该位置写入临时中间结果。

    • Delay notification threshold (minutes) (延迟通知阈值(分钟)) – 指定任务的延迟阈值。如果任务运行时间长于阈值指定的时间,则 AWS Glue 将任务的延迟通知发送给 CloudWatch。

    • Security configuration (安全配置)Server-side encryption (服务器端加密) – 使用这些字段选择任务的加密选项。

    • Use Glue Data Catalog as the Hive metastore (使用 Glue 数据目录作为 Hive 元存储) – 选择此选项,如果您要使用 AWS Glue Data Catalog 作为 Apache 蜂巢元数据仓的替代方案。

    • Additional network connection (附加网络连接) – 对于 VPC 中的数据源,您可以指定类型为 Network,确保您的任务通过 VPC 访问您的数据。

    • Python library path (Python 库路径)Dependent jars path (从属 jars 路径)(不适用于 Python Shell 任务)或 Referenced files path (引用的文件路径) – 使用这些字段指定任务运行脚本时使用的其他文件的位置。

    • Job Parameters (任务参数) – 您可以添加作为命名参数传递给脚本的一组键值对。在 Python 对 AWS Glue API 的调用中,最好按名称显式传递参数。有关在任务脚本中使用参数的更多信息,请参阅《AWS Glue 开发人员指南》中的在 AWS Glue 中传递和访问 Python 参数

    • Tags (标签) – 您可以将标签添加到任务,帮助您组织和识别它们。

  6. 修改任务属性后,保存任务。

将 Spark 随机播放文件存储在 Amazon S3 上

某些 ETL 任务需要读取和合并来自多个分区的信息,例如,在使用连接转换时。此操作称为随机排序。在随机排序过程中,数据会写入磁盘并通过网络传输。借助 AWS Glue 3.0 版,您可以将 Amazon S3 配置为这些文件的存储位置。AWS Glue 提供一个随机播放管理器,用于在 Amazon S3 中写入和读取随机文件。与本地磁盘(或者针对 Amazon EC2 进行了严格优化的 Amazon EBS)相比,从 Amazon S3 写入和读取随机放置文件的速度较慢(降低 5%-20%)。不过,Amazon S3 提供无限存储容量,因此您不必担心“No space left on device”错误运行您的任务。

将您的任务配置为使用 Amazon S3 对文件进行随机排序
  1. Jobs (任务) 页面中的 Your Jobs (您的任务) 列表中,选择要修改的任务的名称。

  2. 在可视化编辑器页面上,选择任务编辑窗格顶部的 Job details (任务详细信息)

    向下滚动到 Job parameters (任务参数) 部分。

  3. 指定以下键/值对。

    • --write-shuffle-files-to-s3true

      这是用于配置 AWS Glue 中随机排序管理器的主要参数,使用 Amazon S3 存储桶来写入和读取随机数据。此参数的默认值为 false

    • (可选)--write-shuffle-spills-to-s3true

      此参数允许您将溢出文件卸载到 Amazon S3 存储桶,从而为AWS Glue。只有将大量数据溢出到磁盘的大型工作负载才需要这样做。此参数的默认值为 false

    • (可选)--conf spark.shuffle.glue.s3ShuffleBucketS3://<shuffle-bucket>

      此参数指定在写入临时排序文件时要使用的 Amazon S3 存储桶。如果未设置此参数,则位置是 shuffle-data 文件夹中指定的临时路径--TempDir)位置。

      注意

      确保 Shell 存储桶位于任务运行所在的相同 AWS 区域。

      此外,随机排序服务不会在任务完成运行后清理文件,因此您应该在 Shell 存储桶位置上配置 Amazon S3 存储生命周期策略。有关更多信息,请参阅《Amazon S3 用户指南》中的对象生命周期管理

保存任务

红色 Job has not been saved (尚未保存任务) 标注将显示在 Save (保存) 按钮左侧,直到您保存任务。

保存按钮左侧带有“Job has not been saved (任务尚未保存)”标签的红色椭圆形。
保存您的任务
  1. 请在 Visual (视觉对象)Job details (任务详细信息) 选项卡中提供所有必需的信息。

  2. 选择保存按钮。

    保存任务后,“not saved (未保存)”标注将更改为显示上次保存任务的时间和日期。

如果您在退出 AWS Glue Studio 时未保存您的任务,您下次登录 AWS Glue Studio 时,会显示通知。通知指示存在未保存的任务,并询问您是否要恢复。如果选择恢复任务,则可以继续对其进行编辑。

排查保存任务时的错误

如果选择 Save (保存) 按钮,但您的任务缺少了一些必需的信息,那么缺少信息的选项卡上会出现一个红色标注。标注中的数字表示检测到的缺失字段数。

一个屏幕快照,显示名为“Untitled job (无标题任务)”的任务的可视化编辑器窗格选项卡,在 Visual (视觉对象) 选项卡上标记为 2 的标注,并在 Job details (任务详细信息) 选项卡上标记为 1 的标注。
  • 如果可视编辑器中的节点配置不正确,则 Visual (视觉对象) 选项卡显示红色标注,出现错误的节点显示警告符号 A red triangle with an exclamation point in the center

    1. 选择节点。在节点详细信息面板中,缺少信息或不正确信息所在的选项卡上会显示一个红色标注。

    2. 在节点详细信息面板中选择显示红色标注的选项卡,然后找到突出显示的问题字段。字段下面的错误消息提供了有关问题的其他信息。

      显示任务编辑器中 Visual (视觉对象) 选项卡的屏幕截图,该选项卡标记为 2。将选中带有警告标签的数据源节点。在节点详细信息面板中,Data source properties (数据源属性) 选项卡具有标记为 2 的标注,并处于选中状态。Database (数据库) 和 Table (表) 两个字段以红色列出,下面有一些消息,指示这些字段中需要一个值。
  • 如果任务属性存在问题,则 Job details (任务详细信息) 选项卡显示红色标注。选择该选项卡并找到突出显示的问题字段。字段下面的错误消息提供了有关问题的其他信息。

    显示任务编辑器中 Job details (任务详细信息) 选项卡的屏幕截图,该选项卡标记为 1。“IAM Role (IAM 角色)”字段以红色列出,下面有一条消息,指示值是必需的。

克隆任务

您可以使用 Clone job (克隆任务) 操作将现有任务复制到新任务。

通过复制现有任务创建新任务
  1. Jobs (任务) 页面中的 Your jobs (您的任务) 列表中,选择要复制的任务。

  2. Actions (操作) 菜单中,选择 Clone job (克隆任务)

  3. 输入新任务的名称。然后,您可以保存或编辑任务。

删除任务

您可以删除不再需要的任务。您可以在单个操作中删除一个或多个任务。

要从 AWS Glue Studio 中删除任务
  1. Jobs (任务) 页面中的 Your jobs (您的任务) 列表中,选择要删除的任务。

  2. Actions (操作) 菜单中选择 Delete job (删除任务)

  3. 验证您要删除任务,方法是输入 delete

在可视化编辑器中查看任务的 Job details (任务详细信息) 选项卡时,也可以删除保存的任务。