2013-03-25 21 views
39

Ho una tabella con più di 1000 partizioni.Hive: come mostrare tutte le partizioni di una tabella?

Il comando "Show partitions" elenca solo un numero ridotto di partizioni.

Come posso mostrare tutte le partizioni?

Aggiornamento:

  1. ho trovato il comando "show partitions" elenca solo esattamente 500 partizioni.

  2. "select ... where ..." elabora solo le 500 partizioni!

risposta

49

CLI ha un limite quando viene visualizzato ouput. Suggerisco di esportare output in file locale:

$hive -e 'show partitions table;' > partitions 
+1

stesso risultato di CLI. E mostra solo 500 partizioni. Non so da dove viene il numero magico 500. –

+1

Nessuna idea allora. È molto strano Tienici informati se lo risolvi o ne trovi la fonte. GL! Forse ingenuo ma sei sicuro che ci siano più di 500 partizioni? – www

+8

Problema risolto da "set cassandra.connection.sliceSize = 10000;". Forse è l'externsion di una Datastax per Hive. –

2

si possono vedere le tabelle Hive MetaStore, informazioni partizioni nella tabella delle "partizioni". È possibile utilizzare "TBLS" unire "Partizione" per interrogare le partizioni di tabella speciali.

1

OK, sto scrivendo questa risposta estendendo la risposta di wmky sopra & anche, assumendo che tu abbia configurato mysql per il metastore invece del derby.

select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>'); 

La query precedente offre tutti i valori possibili delle colonne di partizione.

Esempio:

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) 

ho intenzione di recuperare i valori delle colonne di partizione.

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) 

Restituisce tutte le colonne della partizione.

Nota: JOIN tavolo DBS ON DB_ID quando c'è un DB coinvolti (cioè, quando, più di DB sono stesso nome_tabella)

Problemi correlati