编辑数据转换节点 - AmazonGlue 工作室
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

编辑数据转换节点

AmazonGlue Studio 提供一组内置转换,可用于处理数据。您的数据从作业图中的一个节点传递到名为DynamicFrame,它是对 Apache 火花 SQL 的扩展DataFrame

在作业的预填充逻辑示意图中,数据源和数据目标节点之间是转换-ApplyMapping节点。您可以将此转换节点配置为修改数据,也可以使用其他变换。

映射和转换概述

以下内置转换可以通过AmazonGlue 工作室:

  • ApplyMapping:将数据源中的数据属性键映射到数据目标中的数据属性键。您可以重命名键、修改键的数据类型以及选择要从数据集中删除的键。

  • SelectFields:选择要保留的数据属性密钥。

  • DropFields:选择要删除的数据属性密钥。

  • RenameField:重命名单个数据属性键。

  • Spigot:将数据示例写入 Amazon S3 存储桶。

  • 加入:使用指定数据属性键上的比较短语将两个数据集连接到一个数据集中。您可以使用内部、外部、左、右、左半和左反连接。

  • SplitFields:将数据属性键拆分为两个DynamicFrames。输出是DynamicFrames:一个具有选定的数据属性键,另一个具有剩余数据属性键。

  • SelectFromCollection:请选择一种DynamicFrame从集合DynamicFrames。输出是选定的 DynamicFrame

  • 筛选条件:根据筛选条件将数据集拆分为两个。

  • 自定义转换:在文本输入字段中输入代码以使用自定义转换。输出是DynamicFrames

  • SQL:在文本输入字段中输入 SparkSQL 代码以使用 SQL 查询转换数据。输出为单个DynamicFrame

使用 ApplyMapping 重映射数据属性键

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的ApplyMapping转换会将源数据属性键重映射为目标数据所需配置的键。在 ApplyMapping 转换节点中,您可以执行以下操作:

  • 更改多个数据属性键的名称。

  • 如果支持新数据类型并且两种数据类型之间存在转换路径,则更改 data 属性键的数据类型。

  • 通过指示要删除的数据属性键来选择数据属性键的子集。

您可以添加额外的ApplyMapping节点添加到作业图 — 例如,修改其他数据源或遵循加入转换。

注意

这些区域有:ApplyMapping转换不区分大小写。

将 ApplyMapping 转换节点添加到作业图

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择ApplyMapping将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点,请从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡中的节点详细信息面板。

  4. 修改输入方案:

    • 要重命名数据属性键,请在Target 关键帧字段中返回的子位置类型。

    • 要更改数据属性键的数据类型,请从数据类型列表。

    • 要从目标架构中删除数据属性键,请选择Drop复选框。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

使用 SelectFields 删除大多数数据属性键

您可以通过数据集创建数据属性键的子集,使用SelectFields转换。您可以指明要保留的数据属性键,其余的属性键将从数据集中移除。

注意

这些区域有:SelectFields转换区分大小写。使用ApplyMapping如果您需要一种不区分大小写的方式来选择字段。

将 SelectFields 转换节点添加到作业图

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择SelectFields将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,请从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡中的节点详细信息面板。

  4. 在标题下SelectFields中,请选择您希望保留的数据集中的数据属性键。所有未选择的数据属性键都将从数据集中删除。

    您也可以选中列标题旁边的复选框字段以自动选择数据集中的所有数据属性键。然后,您可以取消选择单个数据属性键以将其从数据集中删除。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

使用 DropFields eld 保留大多数数据属性键

您可以通过数据集创建数据属性键的子集,使用DropFields转换。您可以指明要从数据集中删除的数据属性键以及保留其余键。

注意

这些区域有:DropFields转换区分大小写。使用ApplyMapping如果您需要一种不区分大小写的方式来选择字段。

将 DropFields 转换节点添加到作业图

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择DropFields将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡中的节点详细信息面板。

  4. 在标题下DropFields中,选择要从数据源中删除的数据属性键。

    您也可以选中列标题旁边的复选框字段以自动选择数据集中的所有数据属性键。然后,您可以取消选择单个数据属性键,以便将它们保留在数据集中。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

重命名数据集中的字段

您可以使用RenameField转换以更改数据集中单个属性键的名称。

注意

这些区域有:RenameField转换区分大小写。使用ApplyMapping如果你需要一个不区分大小写的转换。

提示

如果您将ApplyMapping转换时,可以使用单个转换重命名数据集中的多个数据属性键。

将 RenameField 转换节点添加到作业图

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择RenameField将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡。

  4. 在标题下数据字段,从源数据中选择属性键,然后在新字段名称字段中返回的子位置类型。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

使用 Spigot 对您的数据集进行采样

要测试作业执行的转换,您可能需要获取数据样本,以检查转换是否按预期工作。这些区域有:Spigot转换将数据集中的记录子集写入 Amazon S3 存储桶中的 JSON 文件。数据采样方法可以是文件开头的特定记录数,或用于选取记录的概率因子。

将 Spigot 转换节点添加到您的任务图中

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择Spigot将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡中的节点详细信息面板。

  4. 输入 Amazon S3 路径或选择浏览 S3以选择 Amazon S3 中的位置。这是作业写入包含数据示例的 JSON 文件的位置。

  5. 输入抽样方法的信息。您可以为指定一个值记录数从数据集的开头开始写入,概率阈值(以十进制值输入,最大值为 1)来挑选任何给定记录。

    例如,要从数据集中写入前 50 条记录,您可以将记录数设置为 50 个和概率阈值设置为 1(100%)。

联接数据集

这些区域有:加入转换允许您将两个数据集合成一个数据集。您可以在每个数据集的架构中指定关键字名称以比较。输出DynamicFrame包含密钥符合连接条件的行。每个数据集中满足连接条件的行将合并为输出中的单一行DynamicFrame,其中包含在任一数据集中找到的所有列。

将 “连接” 变换节点添加到作业图

  1. 如果只有一个可用的数据源,则必须向作业图中添加新的数据源节点。有关更多信息,请参阅 将节点添加到作业图

  2. 选择联接的源节点之一。选择转换在可视化编辑器顶部工具栏中,然后选择加入将新变换添加到作业图中。

  3. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。

  4. 节点属性选项卡的标题下Pustom 父级中,添加一个父节点,以便有两个数据集为连接提供输入。父节点可以是数据源节点,也可以是转换节点。

    注意

    一个连接只能有两个父节点。

  5. 选择转换选项卡。

    如果您看到一条消息,指出存在冲突的键名称,您可以执行以下操作:

    • 选择解决它自动添加ApplyMapping转换节点到您的作业图中。ApplyMapping ation 节点会向数据集中与其他数据集中的键具有相同名称的任何键添加前缀。例如,如果使用默认值right,则右侧数据集中与左侧数据集中的键名称相同的任何键都将被重命名为(right)key name

    • 在作业图中的前面手动添加转换节点,以删除或重命名冲突的键。

  6. 联接类型列表。

    • 内部联接:根据连接条件,返回包含两个数据集中的列的行。不会返回不满足连接条件的行。

    • 左侧联接:左侧数据集中的所有行,只有右侧数据集中满足连接条件的行。

    • 右侧联接:右侧数据集中的所有行,只有左侧数据集中满足连接条件的行。

    • OUTER EIN:两个数据集中的所有行。

    • 左侧半联接:左侧数据集中基于连接条件在右侧数据集中具有匹配项的所有行。

    • 左侧反联接:左侧数据集中根据连接条件在右侧数据集中没有匹配项的所有行。

  7. 在存储库的转换选项卡的标题下联接条件中,选择添加条件。从每个数据集中选择要比较的属性键。比较运算符左侧的属性键称为左侧数据集,右侧的属性键称为右侧数据集。

    对于更复杂的连接条件,可以通过选择添加条件不止一次。如果您意外添加了条件,您可以选择删除图标( 
                An outline of a trash can
              )将其删除。

  8. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  9. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

有关连接输出方案的示例,请考虑使用以下属性键在两个数据集之间进行连接:

Left: {id, dept, hire_date, salary, employment_status} Right: {id, first_name, last_name, hire_date, title}

连接配置为匹配idhire_date键使用=比较运算符。

因为两个数据集都包含idhire_date键,您选择了解决它自动添加前缀right添加到正确数据集中的键。

输出模式中的键是:

{id, dept, hire_date, salary, employment_status, (right)id, first_name, last_name, (right)hire_date, title}

使用 SplitFields 将数据集拆分为两个

这些区域有:SplitFields转换允许您选择输入数据集中的某些数据属性键,并将其放入一个数据集中,将未选定的键放入单独的数据集中。此转换的输出是DynamicFrames

注意

您必须使用SelectFromCollection转换来转换DynamicFrames转换成单个DynamicFrame,然后才能将输出发送到目标位置。

这些区域有:SplitFields转换区分大小写。添加ApplyMapping转换为父节点,如果您需要不区分大小写的属性键名称。

将 SplitFields 转换节点添加到作业图

  1. (可选) 选择转换在可视化编辑器顶部工具栏中,然后选择SplitFields将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡。

  4. 选择要放入第一个数据集的属性键。未选择的键将放置在第二个数据集中。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

  7. 配置SelectFromCollection转换节点来处理生成的数据集。

概述SelectFromCollection转换

某些变换具有多个数据集作为输出,而不是单个数据集,例如SplitFields。这些区域有:SelectFromCollection变换会选择一个数据集(DynamicFrame) 从数据集集合(DynamicFrames)。变换的输出是选定的DynamicFrame

您必须使用此转换后使用创建DynamicFrames,例如:

  • 自定义代码转换

  • SplitFields

如果您没有添加SelectFromCollection转换节点到您的作业图中,您将收到任务错误。

此转换的父节点必须是返回DynamicFrames。如果您为此转换节点选择一个父节点,该节点返回一个DynamicFrame,例如加入转换时,您的作业将返回一个错误。

同样,如果您使用SelectFromCollection节点作为需要单个DynamicFrame作为输入,任务会返回错误。


          屏幕快照显示节点详细信息面板的 “节点” 属性选项卡上的 “节点父项” 字段。选定的父节点为SplitFields,并显示的错误消息显示为 “父节点拆分字段输出集合,但节点删除字段不接受集合。”

使用 SelectFromCollection 选择要保留的数据集

使用SelectFromCollection转换来转换DynamicFrames转换成单个DynamicFrame

将 SelectFromCollection 转换节点添加到作业图

  1. (可选) 选择转换,然后选择可视化编辑器顶部工具栏上的SelectFromCollection将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡。

  4. 在标题下帧索引中,选择对应于DynamicFrame要从集合中选择DynamicFrames

    例如,如果此转换的父节点是SplitFields变换,在输出架构选项卡上,您可以看到每个DynamicFrame。如果您想要保留DynamicFrame与架构关联产出 2,您可以选择1作为值帧索引,这是列表中的第二个值。

    只有DynamicFrame将包括在输出中。

  5. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  6. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

过滤数据集中的键

使用筛选条件转换来创建新的数据集,方法是基于正则表达式从输入数据集中过滤记录。将从输出中删除不满足筛选条件的行。

  • 对于字符串数据类型,可以筛选键值与指定字符串匹配的行。

  • 对于数值数据类型,您可以通过使用比较运算符将键值与指定值进行比较来筛选行<>=!=<=, 和>=

如果指定多个筛选条件,则结果将使用AND运算符,但您可以选择OR相反。

这些区域有:筛选条件转换区分大小写。添加ApplyMapping转换为父节点,如果您需要不区分大小写的属性键名称。

将筛选器转换节点添加到作业图

  1. (可选) 选择转换,然后选择可视化编辑器顶部工具栏上的筛选条件将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,则从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡。

  4. 选择任一全局和或者全局 OR。这将确定多个过滤器条件的组合方式。所有条件都使用AND或者OR操作。如果您只有一个过滤器条件,则可以选择一个条件。

  5. 选择添加条件中的按钮Filter Condition部分添加筛选条件。

    密钥字段中,从数据集中选择属性键名称。在运算字段中,选择比较运算符。在字段中,输入比较值。以下是一些筛选条件的示例:

    • year >= 2018

    • State matches 'CA*'

    在筛选字符串值时,请确保比较值使用与作业属性(Python 或 Scala)中选择的脚本语言相匹配的正则表达式格式。

  6. 根据需要添加额外的筛选条件。

  7. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  8. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

查找并填充数据集中的缺失值

您可以使用填充缺失值转换来定位数据集中缺少值的记录,并添加一个由插值确定的值的新字段。输入数据集用于训练机器学习 (ML) 模型,该模型确定缺失值应该是什么。如果使用增量数据集,则每个增量集都会用作 ML 模型的训练数据,因此结果可能不那么准确。

在作业图中使用 “填充缺失值” 转换节点

  1. (可选) 选择转换,然后选择可视化编辑器顶部工具栏上的填充缺失值将新转换添加到作业图中(如果需要)。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择父节点,请从Pustom 父级列表用作转换的输入源。

  3. 选择转换选项卡。

  4. 适用于数据字段中,从要分析缺失值的源数据中选择列或字段名称。

  5. (可选)在新字段名称字段中,输入添加到每条记录中的字段的名称,该字段将保存所分析字段的估计替换值。如果分析的字段没有缺失值,则分析字段中的值将复制到新字段中。

    如果未为新字段指定名称,默认名称是已分析列的名称,则具有_filled附加。例如,如果您输入了Age对于 来说为数据字段并且不要为指定值新字段名称,一个名为Age_filled添加到每条记录中。

  6. (可选)配置转换节点属性后,您可以通过选择输出架构选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。如果您尚未在Job 详细信息选项卡上,系统会提示您在此处输入 IAM 角色。

  7. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

使用 SQL 查询转换数据

您可以使用SQL转换以 SQL 查询的形式编写您自己的转换。

SQL 转换节点可以有多个数据集作为输入,但只能生成单个数据集作为输出。中包含一个文本字段,您可以在其中输入 Apache SparkSQL 查询。您可以为用作输入的每个数据集分配别名,以帮助简单地执行 SQL 查询。有关 SQL 语法的更多信息,请参阅Spark SQL 文档

注意

如果您对位于 VPC 中的数据源使用 Spark SQL 转换,请添加Amazon GlueVPC 终端节点到包含数据源的 VPC。有关配置开发终端节点的更多信息,请参阅添加开发终端节点针对开发终端节点设置您的环境, 和访问您的开发终端节点中的Amazon Glue开发人员指南

在作业图中使用 SQL 转换节点

  1. (可选)在需要时将转换节点添加到作业图中。选择Spark SQL作为节点类型。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,或者如果需要 SQL 转换的多个输入,请从Pustom 父级列表用作转换的输入源。根据需要添加额外的父节点。

  3. 选择转换选项卡中的节点详细信息面板。

  4. SQL 查询的源数据集由您在名称字段中的每个节点。如果不想使用这些名称,或者这些名称不适合 SQL 查询,则可以将名称与每个数据集关联。控制台提供默认别名,例如MyDataSource

    
              屏幕截图显示了一个 3 节点作业图。第一个节点是一个名为 “这是一个非常长的名称” 的 S3 源节点。第二个节点是名为 “SQL 查询” 的 SQL 代码转换节点。第三个节点是名为 “修订的飞行数据” 的 S3 数据目标节点。SQL 查询节点处于选中状态,并在节点详细信息面板中显示 “转换” 选项卡。在 “变换” 选项卡面板中,“输入源” 字段显示一个条目,“这是一个非常长的名称”。关联的 Spark SQL 别名字段显示 “我的数据源”。代码块字段显示 “从我的数据源中选择 *”。

    例如,如果 SQL 转换节点的父节点名为Rename Org PK field,您可以将名称org_table使用此数据集。然后,可以在 SQL 查询中使用此别名来代替节点名称。

  5. 在标题下的文本输入字段代码块下,粘贴或输入 SQL 查询。文本字段显示 SQL 语法突出显示和关键字建议。

  6. 在选中 SQL 转换节点的情况下,选择输出架构选项卡,然后选择编辑。提供描述 SQL 查询输出字段的列和数据类型。

    使用以下操作指定架构在输出架构该页面的部分:

    • 要重命名列,请将光标置于密钥文本框(也称为field或者属性键),然后输入新名称。

    • 要更改列的数据类型,请从下拉列表中选择该列的新数据类型。

    • 要向架构中添加新的顶级列,请选择 “溢出” ( 
                    A rectangle with an ellipsis (...) in the center
                  )按钮,然后选择添加 Root 键。新列将添加到架构的顶部。

    • 要从架构中删除列,请选择删除图标 ( 
                    An outline of a trash can
                  )添加到键名称的最右侧。

  7. 完成指定输出方案后,选择Apply保存您的更改并退出架构编辑器。如果不想保存更改,请选择Cancel以编辑架构编辑器。

  8. (可选)配置节点属性和变换属性后,可以通过选择Data Editor选项卡中的节点详细信息面板。首次为任务中的任何节点选择此选项卡时,系统会提示您提供 IAM 角色以访问数据。使用此功能会产生相关的成本,并且只要您提供 IAM 角色,就会立即开始计费。

创建自定义转换

如果需要对数据执行更复杂的转换,或者希望将数据属性键添加到数据集,则可以添加Custom Code转换为您的作业图。“自定义代码” 节点允许您输入执行转换的脚本。

使用自定义代码时,必须使用架构编辑器来指示通过自定义代码对输出所做的更改。编辑架构时,您可以执行以下操作:

  • 添加或删除数据属性密钥

  • 更改数据属性键的数据类型

  • 更改数据属性键的名称

  • 重构嵌套属性键

您必须使用SelectFromCollection转换来选择单个DynamicFrame,然后才能将输出发送到目标位置。

使用以下任务可将自定义转换节点添加到作业图中。

将自定义代码转换节点添加到作业图

将自定义变换节点添加到作业图

  1. (可选) 选择转换,然后选择可视化编辑器顶部工具栏上的自定义转换将自定义转换添加到作业图中。

  2. 在存储库的节点属性选项卡上,在作业图中输入节点的名称。如果尚未选择节点父节点,或者您希望自定义转换有多个输入,请从Pustom 父级列表用作转换的输入源。

输入自定义转换节点的代码

您可以将代码键入或复制到输入字段中。作业使用此代码执行数据转换。您可以在 Python 或 Scala 中提供代码片段。该代码应该采用一个或多个DynamicFrames作为输入并返回DynamicFrames

输入自定义转换节点的脚本

  1. 在作业图中选择了自定义变换节点后,选择转换选项卡。

  2. 在标题下的文本输入字段代码块中,粘贴或输入转换的代码。您使用的代码必须与Job 详细信息选项卡。

    当引用代码中的输入节点时,AmazonGlue 工作室命名DynamicFrames作业逻辑示意图节点根据创建顺序顺序返回。例如:

    • 数据源节点:DataSource0DataSource1DataSource2等等。

    • 转换节点:Transform0Transform1Transform2等等。

以下示例显示了要在代码框中输入的代码的格式:

Python

下面的示例采用第一个DynamicFrame,将其转换为DataFrame来应用本机过滤器方法(仅保留拥有超过 1000 票的记录),然后将其转换回DynamicFrame然后返回它。

def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection: df = dfc.select(list(dfc.keys())[0]).toDF() df_filtered = df.filter(df["vote_count"] > 1000) dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes") return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
Scala

下面的示例采用第一个DynamicFrame,将其转换为DataFrame来应用本机过滤器方法(仅保留拥有超过 1000 票的记录),然后将其转换回DynamicFrame然后返回它。

object FilterHighVoteCounts { def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = { val frame = input(0).toDF() val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext) Seq(filtered) } }

在自定义转换节点中编辑架构

使用自定义转换节点时,AmazonGlue Studio 无法自动推断由变换创建的输出模式。您可以使用架构编辑器描述由自定义转换代码实现的架构更改。

自定义代码节点可以有任意数量的父节点,每个节点都提供DynamicFrame作为自定义代码的输入。自定义代码节点会返回DynamicFrames。EAD ORDynamicFrame用作输入的具有关联架构。您必须添加描述每个DynamicFrame由自定义代码节点返回。

编辑自定义转换节点的输出架构

  1. 在作业图中选择了自定义变换节点后,在节点详细信息面板中,选择输出架构选项卡。

  2. 选择编辑对架构进行更改。

    如果您有嵌套的数据属性键(如数组或对象),则可以选择Expand Root图标 ( 
                  A double-ended arrow pointing upwards and downwards between two parallel
                    lines
                ),以展开子数据属性键列表。选择此图标后,它将更改为折叠行图标 ( 
                  Two arrows, one pointing up to a line and one pointing down to the same
                    line
                ),您可以选择折叠子属性键列表。

  3. 使用页面右侧部分中的以下操作修改架构:

    • 要重命名属性键,请将光标放在密钥文本框,然后输入新名称。

    • 要更改属性键的数据类型,请使用列表为属性键选择新的数据类型。

    • 要将新的顶级属性键添加到架构中,请选择溢出( 
                      An ellipsis (...)
                    ) 图标的左侧Cancel按钮,然后选择添加 Root 键

    • 要将子属性键添加到架构中,请选择添加关键帧icon 
                      A rectangle with a plus sign in the bottom left corner
                    与父键关联。输入子密钥的名称并选择数据类型。

    • 要从架构中删除属性键,请选择Remove图标 ( 
                      An outline of a trash can
                    )设置为键名称的最右侧。

  4. 如果您的自定义转换代码使用多个DynamicFrames,您可以添加额外的输出架构。

    • 要添加新的空架构,请选择溢出( 
                      An ellipsis (...)
                    )图标,然后选择添加输出模式

    • 要将现有架构复制到新的输出架构,请确保要复制的架构显示在模式选择器中。选择溢出( 
                      An ellipsis (...)
                    )图标,然后选择Duplicate (重复)

    如果要删除输出模式,请确保要复制的模式显示在模式选择器中。选择溢出( 
                  An ellipsis (...)
                )图标,然后选择Delete

  5. 将新的根键添加到新架构或编辑重复的键。

  6. 修改输出方案时,请选择Apply按钮保存更改并退出架构编辑器。

    如果您不希望保存更改,请选择Cancel按钮。

配置自定义转换输出

自定义代码转换会一系列DynamicFrames,即使只有一个DynamicFrame在结果集中。

处理自定义转换节点的输出

  1. 添加SelectFromCollection转换节点,该节点将自定义转换节点作为其父节点。更新此转换以指示要使用的数据集。参阅 使用 SelectFromCollection 选择要保留的数据集 了解更多信息。

  2. 添加额外SelectFromCollection转换为作业图,如果要使用其他DynamicFrames由自定义转换节点生成。

    考虑以下情况:添加自定义转换节点以将飞行数据集拆分为多个数据集,但在每个输出方案中复制某些标识属性键,如飞行日期或航班号。您添加一个SelectFromCollection转换节点,以自定义转换节点作为其父节点。

  3. (可选)然后,您可以使用每个SelectFromCollection转换节点作为作业中其他节点的输入,或作为数据目标节点的父节点。