J'ai une table avec plus de 1000 partitions.
La commande "Show partitions
" Ne répertorie qu'un petit nombre de partitions.
Comment puis-je afficher toutes les partitions?
Mise à jour:
J'ai trouvé la commande "show partitions
" Ne listant que 500 partitions.
"select ... where ...
" Ne traite que les 500 partitions!
La CLI a une limite lorsque la sortie est affichée. Je suggère d'exporter la sortie dans un fichier local:
$Hive -e 'show partitions table;' > partitions
Ruche> show partitions nom_table;
Vous pouvez voir les tables Hive MetaStore, les informations sur les partitions dans le tableau "PARTITIONS". Vous pouvez utiliser "TBLS" pour rejoindre "Partition" pour interroger des partitions de table spéciales.
D'accord, j'écris cette réponse en prolongeant la réponse de wmky ci-dessus et aussi, en supposant que vous ayez configuré mysql pour votre métastore au lieu de derby.
select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>');
La requête ci-dessus vous donne toutes les valeurs possibles des colonnes de la partition.
Exemple:
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)
Je vais chercher les valeurs des colonnes de partition.
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)
Renvoie toutes les colonnes de la partition.
Note: JOIN
table DBS
ON DB_ID
quand un DB est impliqué (c'est-à-dire quand plusieurs DB ont le même nom de table)