hive表更改存儲格式(從text改到orc)重跑數據以后查詢報錯:Invalid postscript


背景:

由於規范。除了ods層其他層的存儲格式要用orc。

在從ods層同步一個表到dw層,結果創表的時候因為沒有注意到這個,就直接把ods層的表結構copy了過來,只改了一下路徑和表名,然后就同步了數據,后邊發現不符合規范,所以要改成orc格式的

操作步驟:

drop原表重新創建

然后重新跑數據,這個時候查表,發現報錯Invalid postscript,

去網上搜了一些案例說是

https://blog.csdn.net/qq_33536353/article/details/50970535

原因:
ORC格式是列式存儲的表,不能直接從本地文件導入數據,只有當數據源表也是ORC格式存儲時,才可以直接加載,否則會出現上述報錯。

解決辦法:
要么將數據源表改為以ORC格式存儲的表,要么新建一個以textfile格式的臨時表先將源文件數據加載到該表,然后在從textfile表中insert數據到ORC目標表中。

我就修改了一下我的代碼,先創建一張臨時表,然后在select 這張表。但是還是報錯,但是又跑一遍就沒有問題了,我就覺得很奇怪,然后去請教了一下大佬,

最后發現

1;dropl了表,但是沒有刪除路徑,第一次重跑數據的時候,不會覆蓋原有的數據,但是第二次跑的時候,就會把這個目錄下的所有數據都覆蓋掉,所以drop表的時候,要把目錄也要刪掉


免責聲明!

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



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