如何在hive0.13中使用alter table change column cascade

2fjabf4q  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(1254)

参考这里的alter table change column文档,partition子句在hive0.14中可用,cascade在hive1.1.0中可用
是否可以更新配置单元0.13中所有分区的列类型?如果没有可用的分区或级联,我希望为hive0.13找到一个解决方法
我想在配置单元0.13上运行此命令:

ALTER TABLE my_table CHANGE COLUMN existing_column new_column STRING
CASCADE;

但是cascade不可用。我将使用分区进行循环,但分区在0.14中也可用:(

q5iwbnjs

q5iwbnjs1#

有多种方法可以解决此问题。
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;

如果你想用hive0.14+支持的方式来做,那么你可以从下面的链接应用补丁。https://issues.apache.org/jira/browse/hive-7971
您还可以在配置单元文档中找到所有这些详细信息。

相关问题