在可视化作业中使用 FindMatches - AWS 连接词

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

在可视化作业中使用 FindMatches

要在 AWS Glue Studio 中使用 FindMatches 转换,您可以使用调用 FindMatches API 的自定义转换节点。有关如何使用自定义转换的更多信息,请参阅 Creating a custom transformation

注意

目前,FindMatches API 仅适用于 Glue 2.0。要使用调用 FindMatches API 的自定义转换运行作业,请确保任务详细信息选项卡中的 AWS Glue 版本为 Glue 2.0。如果 AWS Glue 的版本不是 Glue 2.0,则作业将在运行时失败,并显示以下错误消息:“无法从 'awsglueml.transforms' 导入名称 'FindMatches'”。

先决条件

添加 FindMatches 转换

要添加 FindMatches 转换,请执行以下操作:
  1. 在 AWS Glue Studio 作业编辑器中,通过单击可视作业图表左上角的十字符号打开“资源”面板,然后通过选择数据选项卡来选择数据来源。这是您要检查匹配项的数据来源。

    屏幕截图显示了一个圆圈,内有十字符号。当您在可视化作业编辑器中单击此按钮时,资源面板将打开。
  2. 选择数据来源节点,然后通过单击可视化作业图左上角的十字符号打开“资源”面板,然后搜索“自定义转换”。选择自定义转换节点将其添加到图表中。自定义转换链接到数据来源节点。如果不是,则可以单击自定义转换节点并选择节点属性选项卡,然后在父节点下选择数据来源。

  3. 在可视化图中单击自定义转换节点,然后选择节点属性选项卡并命名自定义转换。建议您重命名转换,以便在可视化图中可以轻松识别转换名称。

  4. 选择转换选项卡,可以在其中编辑代码块。在这里,可以添加调用 FindMatches API 的代码。

    屏幕截图显示了选择“自定义转换”节点后,“转换”选项卡中的代码块。

    代码块包含预先填充的代码,可帮助您入门。使用以下模板覆盖预先填充的代码。该模板有一个用于转换 ID 的占位符,您可以提供值。

    def MyTransform (glueContext, dfc) -> DynamicFrameCollection: dynf = dfc.select(list(dfc.keys())[0]) from awsglueml.transforms import FindMatches findmatches = FindMatches.apply(frame = dynf, transformId = "<your id>") return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
  5. 单击可视化图中的自定义转换节点,然后通过单击可视化作业图左上角的十字符号打开“资源”面板,然后搜索“从集合中选择”。由于集合中只有一个 DynamicFrame,因此无需更改默认选择。

  6. 您可以继续添加转换或存储结果,现在,查找匹配的其他列丰富了结果。如果要在下游转换中引用这些新列,则需要将它们添加到转换输出架构中。最简单的方法是选择数据预览选项卡,然后在“架构”选项卡中选择“使用 datapreview 架构”。

  7. 要自定义 FindMatches,您可以添加其他参数以传递给“apply”方法。请参阅 FindMatches class

以增量方式添加 FindMatches 转换

对于增量匹配,其过程与添加 FindMatches 转换相同,但有以下区别:

  • 您需要两个父节点,而不是自定义转换的父节点。

  • 第一个父节点应该是数据集。

  • 第二个父节点应该是增量数据集。

    将模板代码块中的 transformId 替换为您的 transformId

    def MyTransform (glueContext, dfc) -> DynamicFrameCollection: dfs = list(dfc.values()) dynf = dfs[0] inc_dynf = dfs[1] from awsglueml.transforms import FindIncrementalMatches findmatches = FindIncrementalMatches.apply(existingFrame = dynf, incrementalFrame = inc_dynf, transformId = "<your id>") return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
  • 有关可选参数,请参阅 FindIncrementalMatches class