Можно ли изменить метаданные существующего столбца во ВНЕШНЕЙ таблице, которая определена файлом схемы AVRO?

Это продолжение предыдущего вопроса, который я задал: Можно ли изменить метаданные столбца, который находится в многораздельной таблице в Hive?

Вопрос: Можно ли изменить метаданные существующего столбца во ВНЕШНЕЙ таблице, которая определяется файлом схемы AVRO?

Мне нужно изменить метаданные столбца в таблице, которая одновременно секционирована и хранится как ВНЕШНИЙ. Сам по себе столбец не является столбцом разделения. Метаданные хранятся в отдельном файле AVRO. Я могу подтвердить, что обновленные метаданные находятся в файле AVRO, но не в отдельном многораздельном файле.

Чтобы изменить метаданные в разделенных файлах, я выполнил команду ALTER TABLE TableName CHANGE COLUMN ColumnName ColumnName BIGINT CASCADE;, но получаю следующую ошибку:

Ошибка при обработке оператора: FAILED: ошибка выполнения, код возврата 1 из org.apache.hadoop.hive.ql.exec.DDLTask. Не разрешено изменять схему сохраненной таблицы Avro, имеющей внешнюю схему. Попробуйте удалить avro.schema.literal или avro.schema.url из свойств таблицы.

Я пошел дальше и успешно выполнил следующую команду:

ALTER TABLE TableName UNSET TBLPROPERTIES ('avro.schema.url');

Затем я успешно выполнил команду ИЗМЕНИТЬ КОЛОНКУ:

ALTER TABLE TableName CHANGE COLUMN ColumnName ColumnName BIGINT CASCADE;

Когда я выполняю SELECT для таблицы, я все равно получаю сообщение об ошибке, указывающее, что метаданные не совпадают между тем, что находится в хранилище метаданных, и тем, что находится в файле раздела. Я подтвердил это, открыв файл данных раздела. Итак, похоже, что опция CASCADE не применяется к разделу.


person J Weezy    schedule 14.10.2019    source источник