本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在可视化作业中使用 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 转换,请打开 AWS Glue Studio 控制台,网址为 https://console.aws.amazon.com/gluestudio/
。 -
创建机器学习转换。创建后,会生成一个转换 ID。在执行以下步骤时,您将需要此 ID。有关如何创建机器学习转换的更多信息,请参阅 Adding and editing machine learning transforms。
添加 FindMatches 转换
要添加 FindMatches 转换,请执行以下操作:
-
在 AWS Glue Studio 作业编辑器中,通过单击可视作业图表左上角的十字符号打开“资源”面板,然后通过选择数据选项卡来选择数据来源。这是您要检查匹配项的数据来源。
-
选择数据来源节点,然后通过单击可视化作业图左上角的十字符号打开“资源”面板,然后搜索“自定义转换”。选择自定义转换节点将其添加到图表中。自定义转换链接到数据来源节点。如果不是,则可以单击自定义转换节点并选择节点属性选项卡,然后在父节点下选择数据来源。
-
在可视化图中单击自定义转换节点,然后选择节点属性选项卡并命名自定义转换。建议您重命名转换,以便在可视化图中可以轻松识别转换名称。
-
选择转换选项卡,可以在其中编辑代码块。在这里,可以添加调用 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))
-
单击可视化图中的自定义转换节点,然后通过单击可视化作业图左上角的十字符号打开“资源”面板,然后搜索“从集合中选择”。由于集合中只有一个 DynamicFrame,因此无需更改默认选择。
-
您可以继续添加转换或存储结果,现在,查找匹配的其他列丰富了结果。如果要在下游转换中引用这些新列,则需要将它们添加到转换输出架构中。最简单的方法是选择数据预览选项卡,然后在“架构”选项卡中选择“使用 datapreview 架构”。
-
要自定义 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。