Это расширение предыдущего вопроса, который я задал: Можно ли изменить метаданные столбца в многораздельной таблице в Hive?
Вопрос: Можно ли изменить существующие метаданные столбца в таблице EXTERNAL, определенной файлом схемы AVRO?
Мне нужно изменить метаданные столбца в таблице, которая одновременноразделены и сохранены как ВНЕШНЕЕ. Сам столбец не является разделительным столбцом. Метаданные хранятся в отдельном файле AVRO. Я могу подтвердить, что обновленные метаданные находятся в файле AVRO, но не в отдельном многораздельном файле.
Чтобы изменить метаданные в многораздельных файлах, я выполнил команду ALTER TABLE TableName CHANGE COLUMN ColumnName ColumnName BIGINT CASCADE;
, но получилследующая ошибка:
Ошибка при обработке оператора: СБОЙ: Ошибка выполнения, код возврата 1 из org.apache.hadoop.hive.ql.exec.DDLTask. Не разрешается изменять схему хранимой таблицы Avro, имеющей внешнюю схему. Попробуйте удалить avro.schema.literal или avro.schema.url из свойств таблицы.
Я выполнил следующую команду:
ALTER TABLE TableName UNSET TBLPROPERTIES ('avro.schema.url');
Затем я успешно выполнил команду CHANGE COLUMN:
ALTER TABLE TableName CHANGE COLUMN ColumnName ColumnName BIGINT CASCADE;
Когда я выполняю SELECT
для таблицы, я все равно получаю сообщение об ошибке, указывающее, что метаданные не совпадают междунаходится в metastore по сравнению с тем, что находится в файле раздела. Я подтвердил это, открыв файл данных раздела. Итак, похоже, что опция CASCADE не применяется к разделу.