configuration单元:如何显示一个表的所有分区?

我有一个1000+分区的表。

Show partitions ”命令只列出less量的分区。

我怎样才能显示所有的分区?

更新:

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

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

当输出显示时,CLI有一些限制。 我build议将输出导出到本地文件中:

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

您可以在“PARTITIONS”表中看到Hive MetaStore表,分区信息。 你可以使用“TBLS”连接“分区”查询特殊的表分区。

好的,我正在通过扩展wmky的答案来写这个答案,假设你已经为你的Metastore而不是Derbyconfiguration了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