HIVE_PARTITION_SCHEMA_MISMATCH — Между разными столбцами

#sql #json #hive #amazon-athena

#sql #json #улей #amazon-athena

Вопрос:

При запросе таблицы я получаю несоответствие разделов между разными столбцами. Пожалуйста, обратите внимание, сообщается о несоответствии для разных столбцов!

Ошибка, которую я получаю, это,

HIVE_PARTITION_SCHEMA_MISMATCH: Существует несоответствие между таблицей и схемами разделов. Типы несовместимы и не могут быть принудительно изменены. Столбец ‘направление‘ в таблице ‘heat.backup’ объявлен как тип ‘strin&’, но раздел ‘partition_0=2020/partition_1=08/partition_2=07/partition_3=13’ объявил столбец ‘scan_enabled‘ как тип ‘boolean’.

Как вы можете видеть, ошибка возникает в отношении совершенно разных столбцов ‘direction’ и ‘scan_enabled’. Я видел ту же ошибку, в которой говорится, что тип данных в метаданных таблицы является одним типом, но тип данных в метаданных раздела отличается для ОДНОГО столбца, что имеет смысл. Но в этом случае тип данных одного столбца сравнивается с типом данных совершенно другого столбца.

Запрос выполняется к таблице AWS Athena, где базовыми данными являются JSON.

Есть идеи?

Ответ №1:

Проблема возникает из-за того, что не один и тот же столбец имеет разный тип как в метаданных таблицы, так и в метаданных раздела. Это потому, что схема сообщаемого раздела не совпадает со схемой таблицы.

Для подтверждения одной и той же проблемы вызываются два API boto3 /(на ваш выбор SDK) &et_table() и &et_partition(). Это покажет вам разницу между этими двумя.

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

Как упоминалось в документе, решение этой проблемы заключается в том, чтобы удалить раздел, вызывающий ошибку, и создать его заново.Если вы используете обходчик Glue, то вам необходимо включить «Обновлять все новые и существующие разделы метаданными из таблицы» в настройках обходчика.