改变蜂巢中的现有地图

时间:2016-12-15 19:18:38

标签: sql hadoop hive

我有一个hive表,其中一列是地图数据类型。

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>>

任何人都知道如何实现这一目标。

提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>>;