FindMatches 在视觉作业中使用 - AWS Glue

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

FindMatches 在视觉作业中使用

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

注意

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

先决条件

添加变 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 课堂

添加 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