Проблемы с использованием mergeDynamicFrame в AWS Glue
Мне нужно объединить два динамических кадра на Glue. Я попытался использовать функцию mergeDynamicFrame, но получаю ту же ошибку:
AnalysisException: "не удается разрешить"id
'заданные столбцы ввода: [];;\n'Project ['id]\n+- LogicalRDD false\n"
Прямо сейчас у меня есть 2 DF: df_1(id, col1, salary_src) и df_2(id, name, salary)
Я хочу объединить df_2 в df_1 по столбцу "id".
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], false\n"
В этом случае кажется, что он распознает столбцы из df_2 (id, name, salary).. но если я передаю только один из столбцов или даже 3, он продолжает терпеть неудачу
1 ответ
Похоже, это не проблема слияния DynamicFrame.
Основываясь на предоставленной вами информации, похоже, что ваши df1, df2 или оба неправильно считывают данные и возвращают пустой динамический фрейм, поэтому у вас есть пустой список входных столбцов «входные столбцы: []»
если вы читаете с s3, вы должны просканировать свои данные, прежде чем сможете использовать
glueContext.create_dynamic_frame.from_catalog
.
вы также можете включить
df1.show()
или же
df1.printSchema()
после того, как вы создадите свой dynamic_frame в качестве шага устранения неполадок, чтобы убедиться, что вы правильно читаете свои данные перед слиянием.