AWS Не удается приклеить новые разделы из задания ETL - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь использовать задание ETL для прямой записи моего фрейма данных в каталог базы данных и обновления моих разделов.

У меня был такой код:

datasink4 = glueContext.write_dynamic_frame.from_options(
    frame = dropnullfields3, 
    connection_type = "s3", 
    connection_options = {
       "path": TARGET_PATH, 
       "partitionKeys":["x", "y"]
    },
    format = "parquet", 
    transformation_ctx = "datasink4")

additionalOptions = {"enableUpdateCatalog": True}
additionalOptions["partitionKeys"] = ["x", "y"]


sink = glueContext.write_dynamic_frame_from_catalog(frame=dropnullfields3, 
  database=DATABASE, 
  table_name=TABLE, 
  transformation_ctx="write_sink", 
  additional_options=additionalOptions)

, который работал записать данные в каталог. Однако я бы хотел избежать двойной записи. Поэтому я последовал методу 2 из документации для обновления разделов: https://docs.aws.amazon.com/glue/latest/dg/update-from-job.html

И пришел с этим кодом:

datasink4 = glueContext.write_dynamic_frame.from_options(
    frame = dropnullfields3, 
    connection_type = "s3", 
    connection_options = {
       "path": TARGET_PATH, 
       "partitionKeys":["x", "y"]
    },
    format = "parquet", 
    transformation_ctx = "datasink4")

sink = glueContext.getSink(connection_type="s3", path=TARGET_PATH,
                           enableUpdateCatalog=True,
                           partitionKeys=["x", "y"])
sink.setFormat("glueparquet")
sink.setCatalogInfo(catalogDatabase=DATABASE, catalogTableName=TABLE)
sink.writeFrame(dropnullfields3)

Но теперь данные не могут быть загруженным в Athena, я получаю странные ошибки о структуре данных, например:

HIVE_METASTORE_ERROR: com.facebook.presto.spi.PrestoException: Error: < expected at the end of 'struct' (Service: null; Status Code: 0; Error Code: null; Request ID: null)

Я попытался воссоздать таблицу, чтобы в ней были только новые файлы.

У меня также есть попытался запустить краулер на новых файлах клеевого паркета, таблица, сгенерированная искателем, может быть запрошена. Однако, когда я заполняю ту же таблицу из задания ETL выше, я всегда получаю эту ошибку ...

...