configuration单元:如何显示一个表的所有分区?
我有一个1000+分区的表。
“ Show partitions
”命令只列出less量的分区。
我怎样才能显示所有的分区?
更新:
-
我发现“
show partitions
”命令只列出了500个分区。 -
“
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)
返回所有分区列。
注意:当涉及到一个数据库时(即,多个数据库具有相同的表名), JOIN
表DBS
ON DB_ID