匯入hive表資料為空問題解決
阿新 • • 發佈:2020-12-30
一、現象
(1)在本地執行hql時,資料可以正常插入,執行hql檔案時,資料插入表時,查不到資料。
(2)使用TEZ引擎時,hql執行不通過,報錯;使用MR執行時,可以通過,但是無資料輸出。
二、排查
經過排查,發現sql中有一個三個表union all的語句,只要一執行到這個語句,資料就會為空,hql如下:
select group_id,uid,day from ods.tmp union all select group_id,uid,day from ods.tmp1 union all select group_id,uid,day from ods.tmp2
於是查了一下這三張表的建表語句發現,臥槽,居然OUTPUTFORMAT不一樣,破案了。。。。。。
格式如下:
第一張:
第二張:
第三張:
三、解決方案
思路一:檢視【未解決】
with tmp as依然插不進入資料,測試的時候忘記截圖了。。。。可以也實驗一下。
思路二:建立臨時表【解決】
create temporary table
因為第二張表和第三張表都是特殊格式,並且格式是一樣的,就想著,我把這兩張表union all一起,然後插入臨時表總可以了吧,誰知道,報錯:Invocationexception,得,用不了,那隻能一個表建一張臨時表了,就是有點麻煩,還在只有兩張這樣的表。
四、優化
應該還有更好的方案,再想想,哈哈哈哈