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會自動維護新分區中的元數據。