我有一个带有3个分区列(A,B,C)的配置单元外部表,现在我想从分区中删除B和C列,是否可以这样做? 我已经尝试过使用Alter table tab_name删除列col_name; ---但会引发错误,指出无法删除分区列。
答案 0 :(得分:0)
要删除分区列,应重新创建表 。步骤是:
MSCK repair table
。它将为所有找到的分区文件夹创建分区元数据。如果所有这些步骤看起来太复杂或太难了,那么只需创建新表并加载数据:
赞:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table new_table partition(C)
select --list columns without deleted
from old_table;
最后,在删除旧表之后,您可以使用ALTER TABLE table_name RENAME TO new_table_name
重命名新表。