web-dev-qa-db-fra.com

Hive: comment afficher toutes les partitions d'une table?

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:

  1. J'ai trouvé la commande "show partitions" Ne listant que 500 partitions.

  2. "select ... where ..." Ne traite que les 500 partitions!

55
Kevin Leo

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
76
www

Ruche> show partitions nom_table;

9
Sri

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.

3
youchuikai

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)

2
Sridhar