AWS ATHENA: HIVE_CANNOT_OPEN_SPLIT: Ошибка при открытии раскола Hive, несоответствие схемы при запросе файлов Parquet - PullRequest
1 голос
/ 20 января 2020

HIVE_CANNOT_OPEN_SPLIT: Ошибка при открытии Hive split s3: // exp-mahe sh -sandbox / Demo / Year = 2017 / Month = 1 / Day = 3 / part-00015-d0e1263a-616e-435f-b4f4 -9154afb3f07d.c000.snappy.parquet (смещение = 0, длина = 12795): несоответствие схемы, схема метастазирования для статистического столбца строки имеет 17 полей, но схема паркета имеет 9 полей

Я использовал AWS Клеевой гусеничный механизм для получения схемы файлов Parquet. Изначально у меня было мало файлов в разделе Day = 1 и Day = 2, я запустил crawler и смог запросить его с помощью Athena. После добавления еще нескольких файлов в раздел Day = 3, где схема файла со столбцом «статистическая» (type: struct) имеет несколько пропущенных полей, Афина выдает вышеупомянутую ошибку. Есть ли способ решить эту проблему. Я ожидаю нулевое значение в пропущенных полях.

Я попытался ОБНОВИТЬ ОПИСАНИЕ ТАБЛИЦЫ В КАТАЛОГЕ ДАННЫХ в сканере, но он дает тот же результат.

Настройки сканера

1 Ответ

1 голос
/ 14 февраля 2020

Вы получаете эту ошибку, потому что по крайней мере один из ваших файлов Parquet имеет схему, которая отличается от других файлов, составляющих таблицу, или от самого определения таблицы; похоже, это ваш раздел "Day = 3".

Это ограничение в Афине, которое требует, чтобы файлы, являющиеся источником данных для таблицы, имели одинаковую схему, то есть все столбцы файлов должны чтобы соответствовать определению таблицы Афины, даже членам структуры.

Эта ошибка возникает, несмотря на то, что сканер Glue успешно работает; определение таблицы действительно обновляется искателем, но когда вы выполняете запрос, который касается файла с другой схемой (например, отсутствует столбец), вы получаете ошибку HIVE_CANNOT_OPEN_SPLIT.

...