我有一個包含1000多個分區的表格。Hive:如何顯示錶的所有分區?
「Show partitions
」命令只列出少量的分區。
如何顯示所有分區?
更新:
我發現 「
show partitions
」 命令只列出正好500分區。「
select ... where ...
」只處理500個分區!
我有一個包含1000多個分區的表格。Hive:如何顯示錶的所有分區?
「Show partitions
」命令只列出少量的分區。
如何顯示所有分區?
更新:
我發現 「show partitions
」 命令只列出正好500分區。
「select ... where ...
」只處理500個分區!
當輸出顯示時,CLI有一些限制。我建議輸出導出到本地文件:
$hive -e 'show partitions table;' > partitions
您可以在「分區」的表蜂巢MetaStore表,分區信息。 您可以使用「TBLS」連接「分區」查詢特殊表分區。
好吧,我正在通過擴展wmky的回答&以上的方式來寫這個答案,假設您已經爲您的Metastore而不是Derby配置了mysql。
select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>');
以上查詢爲您提供了分區列的所有可能值。
例子:
hive> desc clicks_fact;
OK
time timestamp
..
day date
file_date varchar(8)
# Partition Information
# col_name data_type comment
day date
file_date varchar(8)
Time taken: 1.075 seconds, Fetched: 28 row(s)
我要取分列的值。
mysql> select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='clicks_fact');
+-----------------------------------+
| PART_NAME |
+-----------------------------------+
| day=2016-08-16/file_date=20160816 |
| day=2016-08-17/file_date=20160816 |
....
....
| day=2017-09-09/file_date=20170909 |
| day=2017-09-08/file_date=20170909 |
| day=2017-09-09/file_date=20170910 |
| day=2017-09-10/file_date=20170910 |
+-----------------------------------+
1216 rows in set (0.00 sec)
返回所有分區列。
注:JOIN
表DBS
ON DB_ID
當有涉及到DB(即,時,多個數據庫的有相同的表名)
相同的結果,CLI。它只顯示500個分區。我不知道魔術數字500從哪裏來。 – 2013-03-25 14:03:34
不知道那麼。這很奇怪。如果你解決它或找到它的來源,請讓我們貼出來。 GL!也許天真,但你確定有超過500個分區? – www 2013-03-25 14:57:45
問題通過「set cassandra.connection.sliceSize = 10000;」解決。也許這是一個datastax對Hive的延伸。 – 2013-03-27 15:20:21