2016-03-18 24 views
5

Ho una tabella partizionata - con 201 partizioni. Ho bisogno di trovare l'ultima partizione in questa tabella e usarla per registrare i miei dati. La query per trovare l'elenco di tutte le partizioni è:Come trovare la partizione più recente nella tabella HIVE

use db; 
show partitions table_name; 

Ho bisogno di una query per trovare l'ultima di queste partizioni. Le partizioni sono nel formato

ingest_date=2016-03-09 

Ho provato a utilizzare max() che mi ha dato un risultato errato. Io non voglio attraversare attraverso intera tabella facendo

select max(ingest_date) from db.table_name; 

Questo mi darebbe i risultati attesi .. ma uccidere l'intero punto di avere partizioni nel 1 ° posto.

Esiste una query più efficiente per ottenere l'ultima partizione per la tabella HIve?

+0

Possibile duplicato di [Hive: come visualizzare tutte le partizioni di una tabella?] (Http://stackoverflow.com/questions/15616290/hive-how-to-show-all-partitions-of-a-table) – zero323

+0

Purtroppo, Hive non espone i metadati come tabelle virtuali - niente come un database 'SYS' o' INFORMATION_SCHEMA'. L'unico modo efficace per elencare le partizioni di una tabella Hive è utilizzare ** Metastore java API **. Oppure per decodificare il modo in cui le partizioni sono organizzate ** in HDFS ** _ (in realtà abbastanza semplice) _ quindi elencare le directory, sperando che HDFS e Metastore siano sincronizzati al 100%. –

+0

Oppure, se è possibile eseguire query direttamente sul database Metastore * (probabilmente in MySQL o PostgreSQL) *, eseguire il reverse-engineer del modello dati ed eseguire qualsiasi SQL desiderato. –

risposta

4

È possibile utilizzare "Mostra partizioni":

hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2 

Questo vi darà "2016/03/09" come uscita.

+0

grazie per la risposta ... ma una breve domanda intorno a questo ... c'è una possibilità, come cresce il numero di partizioni di un tavolo alveare ... esempio dire un lakh ... sarebbe ancora quel comando lavorare o eseguire con nei tempi brevi? – Raja

Problemi correlati