2014-02-18 23 views
3

我正在進行一項測試,在測試中我必須找出表格的分區數量並檢查它是否正確。如果我使用show partitions TableName我得到的所有分區的名稱,但我希望得到分區的數量,如show count(partitions) TableName(回退OK btw ..所以它不好)和12(例如)。
有沒有什麼辦法可以實現這個?是可以計算分區數量的嗎?

回答

3

你可以使用:

select count(distinct <partition key>) from <TableName>; 
+0

我沒有嘗試,但與沒有結果:(( – diazazar

+0

它以這種方式工作,我得到輸出。 –

+0

使用此命令,配置單元將轉到所有行,找到不同的/唯一的分區鍵,最後對它們進行計數。你可以想像,這可能非常緩慢。從'顯示分區'計算它會更快;'但我還沒有找到辦法做到這一點。 – rafaelvalle

-2

使用以下語法:

show create table <table name>; 
0

可以使用WebHCat接口獲取這樣的信息。這樣做的好處是,您可以從服務器可訪問的任何位置運行該命令。結果是JSON - 使用您選擇的JSON解析器來處理結果。

在將WebHCat結果傳輸到Python的示例中,僅返回數字24,表示此表的分區數。 (服務器名稱是名稱節點)。

curl -s 'http://*myservername*:50111/templeton/v1/ddl/database/*mydatabasename*/table/*mytablename*/partition?user.name=*myusername*' | python -c 'import sys, json; print len(json.load(sys.stdin)["partitions"])' 
24 
3

使用Hive CLI

$ hive --silent -e "show partitions <dbName>.<tableName>;" | wc -l 

--silent是啓用靜音模式

-e告訴蜂巢執行引用查詢字符串