背景:
由於規范。除了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表的時候,要把目錄也要刪掉