我有1000+的分区表。
“ Show partitions
”命令只列出分区的一个小数目。
我该怎么让所有分区?
更新:
我发现“
show partitions
”命令只列出正好500个分区。“
select ... where ...
”只处理了500个分区!
我有1000+的分区表。
“ Show partitions
”命令只列出分区的一个小数目。
我该怎么让所有分区?
更新:
我发现“ show partitions
”命令只列出正好500个分区。
“ select ... where ...
”只处理了500个分区!
CLI具有显示输出中当一些限制。 我建议输出导出到本地文件:
$hive -e 'show partitions table;' > partitions
蜂房>显示分区表名;
你可以看到在“分区”的表蜂巢MetaStore表,分区信息。 你可以使用“TBLS”加入“分区”来查询特殊的表分区。
好吧,我在写这个答案通过上述&也延长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)
返回所有分区列。
注意: JOIN
表DBS
ON DB_ID
时,有涉及到DB(即当,多个数据库的有相同的表名)