2015-03-26 44 views
6

Sono nuovo di Hadoop e ho appena iniziato a lavorare su Hive, ho capito che fornisce un linguaggio di query per elaborare i dati in HDFS. Con HiveQl possiamo creare tabelle e caricare dati da HDFS.Dove si trova la sua tabella?

Quindi la mia domanda è: dove sono memorizzate quelle tabelle? Specificamente se abbiamo un file da 100 GB nel nostro HDFS e vogliamo fare una tabella alveare da quei dati quale sarà la dimensione di quella tabella e dove è memorizzata?

Se la mia comprensione di questo concetto è sbagliato per favore correggetemi ..

risposta

3

Se la tabella è 100GB si dovrebbe considerare una tabella esterna Hive (in contrapposizione ad un "tavolo gestito", per la differenza, vedi this) .

Con una tabella esterna i dati stessi verranno ancora memorizzati nell'HDFS nel percorso del file specificato (si noti che è possibile specificare una directory di file purché abbiano tutti la stessa struttura), ma Hive creerà una mappa di esso nel meta-store mentre la tabella gestita memorizzerà i dati "in Hive".

Quando si rilascia una tabella gestita, vengono eliminati i dati sottostanti anziché rilasciare una tabella esterna di alveare che elimina solo i metadati dal metaserver che fanno riferimento a tali dati.

In entrambi i casi si utilizzano solo 100 GB come visualizzato dall'utente e si sfruttano la robustezza dell'HDFS anche se la duplicazione dei dati.

+1

Cosa intendi con "caricare l'intero tavolo in memoria e mapparlo nel suo meta-store"? Hive non fa nulla di simile quando crei una tabella gestita. –

+0

Quindi, che cosa sta veramente saltando lì mentre cariciamo i dati in una tabella alveare? – talin

+0

@JeremyBeard Se la mia semantica è sbagliata, non esitate a modificare il post. Se l'intero concetto è sbagliato mi piacerebbe molto sapere dove la mia comprensione non è corretta, quindi ti incoraggio a inviare una risposta – mlegge

1

hive creerà una directory su hdfs.se non hai specificato alcuna posizione, creerà una directory sulla cartella/user/hive/warehouse su hdfs.after comando di caricamento i file spostati nella cartella/warehouse/tablename.you può anche puntare alla cartella hdfs se contiene partizioni (se i file sono partizionati) o utilizzare il concetto di tabella esterna.