Hive帶分區列的表更改列類型之坑


常見的一個場景是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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM