ALTER TABLE 表名 REPLACE COLUMNS(
-- 更新后的表信息
`id` bigint COMMENT '自增主键',
`cid` string COMMENT '创建人(初始化数据值为初始化)',
`ctime` string COMMENT '创建时间',
`uid` string COMMENT '更新人(初始化数据值为初始化)',
`utime` string COMMENT '更新时间'
) cascade;
官方文档描述如下:
The CASCADE|RESTRICT clause is available in Hive 1.1.0.
ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata.
RESTRICT is the default, limiting column changes only to table metadata.
如上所述,在1.1.0中表和分区的元数据就是分开处理的,在增加字段的时候添加CASCADE能同时更新表和分区 对于,在添加字段的时候没有指定的cascade的情况
因为我们在重跑数据的时候,虽然HDFS上的数据更新了,但是我们查询的时候仍然查询的是旧的元数据信息(即Mysql中的信息)
注意:对于执行了add column语句之后新生成的分区,是不会有问题的,Hive会自动维护新分区中的元数据。