在 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()
作为故障排除步骤,以确保您在合并之前正确读取数据。
我需要在 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()
作为故障排除步骤,以确保您在合并之前正确读取数据。