更改配置单元中的现有Map

hvvq6cgz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(311)

我有一个配置单元表,其中一列是Map数据类型。

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

现在我想在struct值中添加一列,如下所示:

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

任何人都知道如何做到这一点。
提前谢谢。

hgb9j2n6

hgb9j2n61#

https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-更改列名称/类型/位置/注解

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

jmp7cifd

jmp7cifd2#

找到解决方案:

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

相关问题