Ответ 1
CLI имеет некоторый предел при отображении вывода. Я предлагаю экспортировать вывод в локальный файл:
$hive -e 'show partitions table;' > partitions
У меня есть таблица с 1000 + разделами.
"Show partitions
" команда перечисляет только небольшое количество разделов.
Как я могу показать все разделы?
Update:
Я обнаружил, что команда "Show partitions
" содержит только 500 разделов.
"select ... where ...
" обрабатывает только 500 разделов!
CLI имеет некоторый предел при отображении вывода. Я предлагаю экспортировать вывод в локальный файл:
$hive -e 'show partitions table;' > partitions
Вы можете увидеть таблицы таблиц Hive MetaStore, информацию о разделах в таблице "PARTITIONS". Вы можете использовать "TBLS", чтобы присоединиться к разделу "Раздел", чтобы запросить специальные разделы таблицы.
Хорошо, я пишу этот ответ, расширив wmky ответ выше, а также, предположив, что вы настроили 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
table DBS
ВКЛ DB_ID
, когда есть задействованный БД (т.е. когда у нескольких БД есть одно и то же имя_таблицы)