1. 程式人生 > >Hive查詢count(*)有資料,但是select * 沒有資料

Hive查詢count(*)有資料,但是select * 沒有資料

若發生將一個使用LZO壓縮過的表資料匯入一個沒有被壓縮過表內,

類似於如下兩個表:

圖一:LZO壓縮

圖二未壓縮


查詢將出現這種狀況,hdfs目錄下明明有資料,count(*)有資料總量,但是select就是查詢不出來,
具體原因:
表的結構是未壓縮過的,但是資料是壓縮過的,通過select(此處查詢的方法跟表的結構有關係)查詢壓縮過的結果,肯定不會顯示,

具體解決辦法:
使用select的時候指定對應的壓縮方法就可以查詢出來壓縮過的資料,類似於下:

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;

select * ....就可以查到資料了。