Confronto tra le tabelle interne di Hive e le tabelle esterne

Curiosi di conoscere i diversi tipi di tabelle Hive e come sono diverse l’una dall’altra?

Dopo aver discusso le basi delle tabelle Hive nei modelli di dati Hive, esploriamo ora la differenza principale tra le tabelle interne ed esterne di Hive.

In questo articolo, stiamo per discutere i due diversi tipi di tabella Hive che sono tabella interna (tabella gestita) e tabella esterna. L’articolo elenca poi le differenze tra le tabelle interne di Hive e le tabelle esterne. Vedremo anche diversi casi in cui possiamo usare queste tabelle Hive.

Così, iniziamo con le tabelle interne Hive e le tabelle esterne.

Rimani aggiornato con le ultime tendenze tecnologiche
Join DataFlair su Telegram!!

Introduzione alle tabelle interne ed esterne di Hive

Tabelle interne ed esterne di Hive

Fondamentalmente, Hive conosce due diversi tipi di tabelle: La tabella interna e la tabella esterna. La tabella interna è anche conosciuta come la tabella gestita.

Possiamo identificare le tabelle interne o esterne usando l’istruzione DESCRIBE FORMATTED table_name in Hive, che mostrerà o MANAGED_TABLE o EXTERNAL_TABLE a seconda del tipo di tabella.

Tabella interna di Hive

Hive possiede i dati per le tabelle interne.

È la tabella predefinita in Hive. Quando l’utente crea una tabella in Hive senza specificarla come esterna, allora per default, una tabella interna viene creata in una posizione specifica in HDFS.

Per default, una tabella interna verrà creata in un percorso cartella simile a /user/hive/warehouse directory di HDFS. Possiamo sovrascrivere la posizione predefinita tramite la proprietà location durante la creazione della tabella.

Se abbandoniamo la tabella o la partizione gestita, i dati della tabella e i metadati associati a tale tabella verranno eliminati da HDFS.

Tabella esterna Hive

Hive non gestisce i dati della tabella esterna.

Creiamo una tabella esterna per uso esterno come quando vogliamo utilizzare i dati al di fuori di Hive.

Le tabelle esterne sono memorizzate al di fuori della directory del magazzino. Possono accedere ai dati memorizzati in fonti come posizioni HDFS remote o Azure Storage Volumes.

Ogni volta che abbandoniamo la tabella esterna, solo i metadati associati alla tabella verranno eliminati, i dati della tabella rimangono intatti da Hive.

Possiamo creare la tabella esterna specificando la parola chiave EXTERNAL nell’istruzione Hive create table.

Differenza tra Hive Internal e External Table

hive internal e external tableshive internal e external tables

Vediamo ora la differenza tra le due tabelle Hive. Le principali differenze nelle tabelle interne ed esterne di Hive sono:

Semantica di carico

La semantica di carico varia in entrambe le tabelle. Vediamo la differenza nella semantica di carico tra la tabella interna e la tabella esterna.

a. Tabella interna

Quando carichiamo i dati in una tabella interna, Hive sposta i dati nella directory del magazzino.

Per esempio:

Qui in questo esempio, stiamo creando una tabella ‘internaldemo’. Quando carichiamo i dati nella tabella ‘internaldemo’, allora Hive sposta i dati nella directory del magazzino.

Impara l’installazione di Apache Hive su Ubuntu per eseguire query Hive.

creare tabella interna - hive tabella interna ed esterna

Ora, caricare i dati nella tabella interna creata sopra. caricare i dati nella tabella interna - hive tabelle interne ed esterne

Descrivendo la tabella, vediamo che i dati della tabella vengono spostati nella directory del magazzino Hive.descrivere tabella interna - hive tabelle interne ed esterne

b. Tabella esterna

Con la parola chiave EXTERNAL, Hive sa che non sta gestendo i dati della tabella, quindi non sposta i dati nella directory del magazzino. Hive non controlla nemmeno se la posizione esterna al momento in cui viene definita esiste o meno.

Per esempio:

In questo esempio, stiamo creando una tabella esterna, ‘external_demo’ sulla posizione specificata che è ‘/home/dataflair/’. Caricando i dati nella tabella esterna, l’Hive non sposta i dati della tabella nella sua directory di magazzino.

creare tabella esterna - hive tabelle interne ed esterne

Ora, caricare dati nella tabella esterna creata sopra. caricare i dati nella tabella esterna - hive tabelle interne ed esterne

Sfogliando la tabella, possiamo vedere che i dati della tabella Hive non vengono spostati nella directory del magazzino Hive. Sono memorizzati nella posizione specificata durante la creazione di una tabella.descrivere la tabella esterna - tabelle interne ed esterne Hive

Semantica drop

Come la semantica load, anche la semantica drop varia in entrambe le tabelle. Vediamo la differenza nella semantica di drop tra la tabella interna e la tabella esterna.

a. Tabella interna

L’eliminazione della tabella interna cancellerà i dati della tabella, così come i metadati associati alla tabella.

Per esempio:

In questo esempio, stiamo eliminando la tabella gestita ‘internaldemo’. Puoi vedere che eliminerà sia i metadati che i dati della tabella.

drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

I dati della tabella vengono eliminati anche dall’HDFS.

b. Tabella esterna

L’eliminazione della tabella esterna elimina solo i metadati della tabella. Il contenuto della tabella rimane intatto.

Per esempio:

In questo esempio, possiamo vedere che eliminando la tabella esterna ‘external demo’, il contenuto della tabella è ancora presente nella posizione HDFS.

cancellazione tabella esterna - tabelle hive

localizzazione tabella esterna - tabelle hive

supporto TRUNCATE

Il comando TRUNCATE funziona solo per la tabella interna.

Per esempio:

In questo esempio, stiamo cercando di usare il comando truncate con la tabella ‘externaldemo’. Otterremo un messaggio di errore che dice ‘Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional funziona solo per la tabella interna. Non funzionano per la tabella esterna.

Query Result Caching

Query Result Caching che salva i risultati di una query Hive eseguita per il riutilizzo nelle query successive funziona solo per la tabella interna.

Quindi queste sono alcune differenze tra la tabella interna Hive e la tabella esterna.

Vediamo ora quando usare quale tabella Hive.

Quando usare tabella interna ed esterna?

Tabella interna di Hive

Possiamo usare la tabella interna nei casi:

  • Quando si generano tabelle temporanee.
  • Quando è richiesto che Hive gestisca il ciclo di vita della tabella.
  • E quando non vogliamo i dati della tabella dopo la cancellazione.

Tabella esterna di Hive

Possiamo usare la tabella esterna nei casi:

  • Quando non stiamo creando la tabella basata sulla tabella esistente.
  • Quando è richiesto di usare i dati fuori da Hive. Per esempio, i file di dati vengono letti ed elaborati da un programma esistente che non blocca i file.
  • Quando non vogliamo cancellare completamente i dati della tabella anche dopo DROP.
  • Quando i dati non devono essere propri di Hive.

Quindi, questo era tutto in Hive tabelle interne ed esterne. Spero che vi piaccia la nostra spiegazione.

Conclusione

Dopo aver letto l’articolo, possiamo concludere che le tabelle Hive sono di due tipi: tabella interna, conosciuta anche come tabella gestita, e tabella esterna.

I dati della tabella interna vengono gestiti da Hive. Hive non è responsabile della gestione dei dati della tabella esterna.

Eliminando la tabella interna Hive, i dati della tabella e i metadati vengono entrambi eliminati, mentre eliminando la tabella esterna Hive, solo i metadati della tabella vengono eliminati.

Vedi anche-

  • Diversi modi per configurare Hive Metastore
  • I migliori libri Apache Hive per imparare Hive per i principianti

Qualsiasi domanda mentre lavori con le tabelle interne ed esterne di Hive? Chiedi qui sotto.

Continua a imparare!!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.