AWS Glue — Данные не вставляются в желаемое место назначения

#amazon-web-services #apache-spark #pyspark #aws-glue

#amazon-веб-сервисы #apache-spark #pyspark #aws-glue

Вопрос:

У меня есть задание на склеивание для вставки данных в местоположение S3. Я хотел вставить данные в определенный файл CSV в моей папке, но задание на склеивание создает новый файл назначения при каждом запуске. Не могли бы вы, пожалуйста, указать мне, что не так в этом фрагменте кода?

 applymapping1 = ApplyMapping.apply(frame = datasource_lk, mappings = [("row_id", "bigint", "row_id", "bigint"), ("Quantity", "long", "Quantity", "long"),("Category", "string", "Category", "string") ], transformation_ctx = "applymapping1")

selectfields2 = SelectFields.apply(frame = applymapping1, paths = ["row_id", "Quantity", "Category"], transformation_ctx = "selectfields2")

resolvechoice3 = ResolveChoice.apply(frame = selectfields2, choice = "MATCH_CATALOG", database = "mydb", table_name = "order_summary_csv", transformation_ctx = "resolvechoice3")

datasink4 = glueContext.write_dynamic_frame.from_catalog(frame = resolvechoice3, database = "mydb", table_name = "order_summary_csv", transformation_ctx = "datasink4")
job.commit()
  

У меня есть CSV-файл (order_summary.csv) в определенной папке S3, но вместо вставки записей в него, glue создает новую папку с именем order_summary.csv и вставляет файл с некоторыми случайными именами внутри этой папки.

Комментарии:

1. Именно так spark сохраняет файлы. Spark сохранит не файл, а файлы внутри указанной вами папки.

2. Я предполагаю, что вы ищете что-то вроде слияния в таблице RDBMS. Spark не работает таким образом, как указал @Lamanus

3. Спасибо за ответ.. У меня есть еще 2 сомнения, 1) для чего используется ‘ResolveChoice’ в этом коде? обязательно ли это? 2) Почему мы упоминаем ‘имя_таблицы = «order_summary_csv»‘ в последней строке кода, если Spark собирается сохранять файлы отдельно по-своему?