Проблемы с использованием 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 в качестве шага устранения неполадок, чтобы убедиться, что вы правильно читаете свои данные перед слиянием.

Другие вопросы по тегам