Как обрабатывать изменения схемы в клею и получать ожидаемый результат в CSV? - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь сканировать некоторые файлы с разными пакетами (совместимые с данными) с помощью AWS Glue.
Как я прочитал в документации AWS, сканеры Glue обновляют таблицы каталога для любых изменений в схеме (добавление новых столбцов и удаление отсутствующих столбцов). Я проверял «Обновить определение таблицы в каталоге данных» и «Создать отдельную схему для каждого пути S3» при создании искателя.
Пример:
скажем, у меня есть файл "File1.csv", как показано ниже:

имя, возраст, LOC

Ravi, 12, Ind

Joe, 32, США

Скажем, у меня есть другой файл "File2.csv", как показано ниже:

имя, возраст, высота

Джек, 12160

Джейн, 32180

После запуска сканеров в схеме было обновлено: имя, возраст, местонахождение, рост но когда я попытался прочитать файлы с помощью Athena или попытался записать содержимое обоих файлов в csv с помощью задания Glue ETL, я заметил, что: вывод выглядит так:

имя, возраст, LOC, высота

Ravi, 12, Ind ,,

Joe, 32, США ,,

Джек, 12160 ,,

Джейн, 32180 ,,

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

где, как и ожидалось:

имя, возраст, LOC, высота

Ravi, 12, Ind ,,

Joe, 32, США ,,

Jack, 12,, 160

Jane, 32,, 180

Короче говоря, клей пытается заполнить столбец непрерывным образом в комбинированном выводе. Есть ли способ получить ожидаемый результат?

1 Ответ

0 голосов
/ 06 ноября 2018

Я получил ожидаемый результат с файлами Parquet. Изначально я использовал CSV, но CSV deserializer не понимает, как правильно расположить элементы при изменении схемы. Изменение отдельных csvs в паркет, а затем их обход за другим помогло мне включить изменяющуюся схему.

...