在 AWS Glue 上使用 mergeDynamicFrame 的问题

Issues using mergeDynamicFrame on AWS Glue

我需要在 Glue 上合并两个动态帧。 我尝试使用 mergeDynamicFrame 函数,但我不断收到相同的错误:

AnalysisException:“无法解析'id'给定的输入列:[];;\n'Project ['id]\n+- LogicalRDD false\n”

现在,我有 2 个 DF: df_1(id, col1, salary_src) and df_2(id, name, salary)

我想通过“id”列将 df_2 合并到 df_1。

df_1 = glueContext.create_dynamic_frame.from_catalog(......)
df_2 = glueContext.create_dynamic_frame.from_catalog(....)

merged_frame = df_1.mergeDynamicFrame(df_2, ["id"]) 

applymapping1 = ApplyMapping.apply(frame = merged_frame, mappings = [("id", "long", "id", "long"), ("col1", "string", "name", "string"), ("salary_src", "long", "salary", "long")], transformation_ctx = "applymapping1")

datasink2 = glueContext.write_dynamic_frame.from_options(....)

作为测试,我尝试通过两个 DF(薪水和 salary_src)的列,并且错误为:

AnalysisException:“无法解析'salary_src'给定的输入列:[id,name,salary];;\n'Project [salary#2,'salary_src]\n+- LogicalRDD [id#0, name#1, salary#2], false\n"

在这种情况下,它似乎可以识别 df_2(id、姓名、薪水)中的列。但是如果我只通过其中一列,甚至是 3,它就会一直失败

这似乎不是 mergeDynamicFrame 问题。

根据您提供的信息,您的 df1、df2 或两者似乎都没有正确读取数据并返回一个空的动态帧,这就是为什么您的输入列列表为空“输入列:[]”的原因。 =13=]

如果您从 s3 读取数据,则必须先抓取数据才能使用 glueContext.create_dynamic_frame.from_catalog

您还可以在创建 dynamic_frame 之后包含 df1.show()df1.printSchema() 作为故障排除步骤,以确保您在合并之前正确读取数据。