Существует несколько способов решения этой проблемы.
1) Ваша таблица секционирована, что означает, что каждый существующий раздел также необходимо обновить с новым типом столбца.Это можно сделать, настроив свойство ниже и затем запустив оператор alter
.
SET hive.exec.dynamic.partition = true;
ALTER TABLE table_name PARTITION (partition_column)
CHANGE COLUMN old_col new_col data_type;
Это свойство включит динамическое разбиение, то есть оператор alter изменит все разделы.
2) ВыВы также можете сделать это, выполняя по одному разделу за раз, просто передав ключ ключа из своего скрипта и запустив оператор ALTER
для всех своих разделов.В этом случае утверждение будет выглядеть так:
ALTER TABLE table_name PARTITION (partition_column='value')
CHANGE COLUMN old_col new_col data_type;
Если вы хотите сделать это так, как поддерживает Hive 0.14+, вы можете применить патч по ссылке ниже.https://issues.apache.org/jira/browse/HIVE-7971
Вы также можете найти все эти детали в Документация по кустам .