2015-07-20 75 views
1

無論何時我使用Hive CLI並執行一些查詢,而不是能夠查看錶格,我只會得到一個「OK」或錯誤。我知道這可能是因爲許多表格非常大,但如果我只想測試一部分數據的代碼/邏輯,如何查看整個表格結果以確保正確性?配置單元視圖查詢結果?

hive> select * from input; 
OK 
Time taken: 0.085 seconds 

回答

1

我最好的猜測是你的表沒有背後的數據。您是否創建了表格並忘記將文件放在適當的hdfs目錄中。不要一:

hive> describe formatted my_table; 

然後採取從上面給出的HDFS文件位置一看:

hive> !hadoop fs -ls /location/obtained/from/describe/command 

你應該會看到你的文件。如果沒有,請確保將文件放在該目錄中,然後再次嘗試查詢。如果不是,則執行-put或-cp將文件移動到該位置。

測試代碼

如果你想測試你可以做以下一些簡單的表達: 要在蜂巢雙象表,其中有一列一列,你可以做到以下幾點:

create table dual (x int); 
insert into table dual select count(*)+1 as x from dual; 

測試就像你在SQL將在此表中的表達式:

select split('3,2,1','\\,') as my_new_array from dual; 

除此之外它是一個好主意,以測試你的RESU正如你所提到的那樣,它會處理一部分數據。然後,你可以打印你的數據轉換爲文本文件或易成Excel文件或其它格式你可能更喜歡你做了之後,你想要的任何額外的轉換和檢查結果:

--grab a subset of the table 
CREATE TABLE my_table_subset like my_table; 
Insert overwrite table my_table_subset 
select * from my_table 
tablesample (1 PERCENT) t; 

如果你不喜歡一個隨機的子集,你將不得不建立一個查詢來定位你喜歡的子集。然後打印到您喜歡如上所述的文件格式:

hive -e "select * from my_table_subset limit 1000" > /localfileystem/path/myexcel.xls; 

Excel作爲一個文件瀏覽器,可有限制,以便別的東西可優選......這時候數據變得非常大提出了一個問題。你可能需要像ultraedit或其他軟件。祝你好運!希望這可以幫助。

0

據我所知,你的表沒有任何數據,這就是爲什麼它不來。一般來說,無論大小如何,「select *」都會顯示數據。 'select *'命令基本上等同於'cat'命令,並且與表的大小無關。

如果你想處理你的數據的一個子集,最好的辦法是創建一個分區。如果您的數據以不可能分區的方式存儲,那麼我會建議創建一個包含1000-2000行的臨時表,然後嘗試一下您的查詢。

+0

嗨,我有一個類似的問題,並試圖解決它。如果你說的是真的,並且select語句確實沒有返回任何行,那麼「SELECT COUNT(*)」將返回一個0.但是,事實並非如此。我只得到確定。說實話,我沒有問題,但在我的陳述中包含'set.hive.dynamic.partition = false'後,我開始得到這些問題。重置Hive並沒有幫助... –