2016-12-15 2 views
2

У меня есть таблица улей с одним из столбцов в виде типа данных карты.изменить существующую карту в улье

map<int,struct<id :bigint,QTY:decimal(12,4),DISC_AMT:decimal(20,4),DISC_TYPE:string>> 

Теперь я хочу, чтобы добавить один столбец внутри значений структуры, как показано ниже:

map<int,struct<id :bigint,QTY:decimal(12,4),DISC_AMT:decimal(20,4),DISC_TYPE:string,new_column :int>> 

Кто знает, как этого добиться.

Заранее спасибо.

ответ

0

Найдено решение:

alter table tablename change my_map_name my_map_name map<int,struct<id :bigint,QTY:decimal(12,4),DISC_AMT:decimal(20,4),DISC_TYPE:string,new_column :int>>; 
1

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

alter table t change column mycol mycol map<int,struct<id:bigint,QTY:decimal(12,4),DISC_AMT:decimal(20,4),DISC_TYPE:string,new_column:int>>; 

Обратите внимание, что по умолчанию только новые разделы будут затронуты от изменений.
Если вы хотите, чтобы это применимо ко всем разделам, добавьте слово cascade в конце

Смежные вопросы