蜂巢:如何显示表的所有分区?(Hive: how to show all partitions of

2019-08-17 23:31发布

我有1000+的分区表。

Show partitions ”命令只列出分区的一个小数目。

我该怎么让所有分区?

更新:

  1. 我发现“ show partitions ”命令只列出正好500个分区。

  2. select ... where ... ”只处理了500个分区!

Answer 1:

CLI具有显示输出中当一些限制。 我建议输出导出到本地文件:

$hive -e 'show partitions table;' > partitions


Answer 2:

蜂房>显示分区表名;



Answer 3:

你可以看到在“分区”的表蜂巢MetaStore表,分区信息。 你可以使用“TBLS”加入“分区”来查询特殊的表分区。



Answer 4:

好吧,我在写这个答案通过上述&也延长wmky的答案,假设您为metastore而不是德比配置的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)

返回所有分区列。

注意: JOINDBS ON DB_ID时,有涉及到DB(即当,多个数据库的有相同的表名)



文章来源: Hive: how to show all partitions of a table?
标签: hadoop hive