1.问题描述
日常工作中我们经常会给hive表新增字段,常见的新增方式多为:
ALTER TABLE db.table_test add columns (new string comment '我是新字段') ;
如果我们的表是分区表,那常常就会出现一些问题:
- 查询旧分区时会莫名其妙的出现 FAILED:Execution Error,return code 2 from XXXXXX 等报错
- insert overwrite时 旧分区新增的字段无法更新
2.解决办法
通过查询官方文档,可以发现官方给出语法结构如下
ALTER TABLE table_name
[PARTITION partition_spec]
ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
[CASCADE|RESTRICT]
其中CASCADE选项为选填的字段,但是对于分区表,一定要加上,否则其历史分区的元数据信息(metadata)将无法正常更新,导致访问历史分区时会报莫名的错误
因此我们只需要在新增字段的语句最后加上CASCADE就可以啦。