分區表新增字段注意事項
對Hive表新增字段時,官方給出語法結構如下
ALTER TABLE table_name
[PARTITION partition_spec]
ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
[CASCADE|RESTRICT]
1
2
3
4
其中CASCADE選項爲選填的字段,但是對於分區表,一定要加上,否則其歷史分區的元數據信息(metadata)將無法正常更新,導致訪問歷史分區時會報莫名的錯誤
對此,官方給出的使用建議爲:
ALTER TABLE ADD or REPLACE COLUMNS CASCADE will override the table partition’s column metadata regardless of the table or partition’s protection mode. Use with discretion.
本數倉由於大量表都是分區表,因此建議在增加字段時,記得增加CASCADE選項,實際可參考如下例子
ALTER TABLE Database.TableName ADD COLUMNS(
col1 STRING COMMENT '列1'
,col2 STRING COMMENT '列2'
,col3 STRING COMMENT '列3'
,col4 STRING COMMENT '列4'
,col5 STRING COMMENT '列5'
) CASCADE;
注意:如果是sqoop將mysql數據同步至hive,沒有指定指定字段的情況下,當mysql表增加字段的時候,此時只需要將hive表添加字段,就OK了。