常見的一個場景是Hive里面一個帶分區的表,原來是int類型的字段,后來發現數據超過了int的最大值,要改成bigint。或者是
bigint要改string或decimal。無論如何,對於帶分區的表,要改列類型,有一個坑:
如果使用alter table t change column oldcol newcol bigint,即把int類型的oldcol改為bigint類型的newcol
這個時候,去讀數據,應該還是NULL的。
這是因為每個分區Hive還會存一份元數據,於是兩種解決方案:
一個是alter table t change column oldcol newcol bigint cascade
一個是alter table t change column oldcol newcol bigint, alter table t partition(...) change column oldcol newcol bigint
參考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterColumn