dataframe - 在 AWS Glue 上使用 mergeDynamicFrame 的问题
问题描述
我需要在 Glue 上的两个动态帧之间进行合并。我尝试使用 mergeDynamicFrame 函数,但我不断收到相同的错误:
AnalysisException:“无法解析' id
'给定输入列:[];;\n'Project ['id]\n+- LogicalRDD false\n”
现在,我有 2 个 DF:df_1(id,col1,salary_src)和 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 和salary_src)中传递一列,并且错误为:
AnalysisException:“无法解析' salary_src
'给定输入列:[id,name,salary];\n'Project [salary#2,'salary_src]\n+- LogicalRDD [id#0,name#1,salary#2],假\n"
在这种情况下,它似乎可以识别 df_2 中的列(id、name、salary).. 但是如果我只通过其中一列,甚至是第三列,它就会一直失败
解决方案
它似乎不是 mergeDynamicFrame 问题。
根据您提供的信息,您的 df1、df2 或两者似乎都没有正确读取数据并返回一个空的动态帧,这就是为什么您有一个空的输入列列表“输入列:[]”
如果您从 s3 读取数据,则必须先爬取数据,然后才能使用glueContext.create_dynamic_frame.from_catalog
.
您还可以在创建 dynamic_frame 之后df1.show()
或df1.printSchema()
之后将其作为故障排除步骤,以确保在合并之前正确读取数据。
推荐阅读
- recaptcha - 如何获取 reCAPTCHA 令牌以发送到 curl 请求
- php - PHP 中的 header() 是异步函数吗?
- tensorflow - 如何为二进制分类设置神经网络架构
- python - 使用python检测.mat版本
- c - 将 XOR 实现为宏未按预期工作
- javascript - 从 xml 接收单个数据
- java - 没有队列的负整数的 LSD 基数排序
- documentum - 无法在 webtop 的 SAVED SEARCH 中保存任何内容。文献库
- scala - 仅知道过滤条件时,对通用数据通用数组进行 Spark 过滤
- python - 获取所有用户的输入(
输入 ) 在 .aiml 文件中并将其附加到列表中