Introduzione alla Tabella Esterna dell’Alveare
Una tabella esterna è una tabella che descrive lo schema di metadati di file esterni. Fondamentalmente, ci sono due tipi di tabelle nelle tabelle gestite da HIVE o interne e nelle tabelle esterne. Lo scopo principale della definizione di una tabella esterna è accedere ed eseguire query sui dati memorizzati all’esterno dell’Hive. Questi file di dati possono essere memorizzati in altri strumenti come Pig, Azure storage Volumes (ASV) o qualsiasi posizione HDFS remota. Hive presuppone che non abbia la proprietà dei dati per le tabelle esterne e, pertanto, non richiede di gestire i dati come nelle tabelle gestite o interne. Inoltre, per le tabelle esterne, i dati non vengono eliminati quando si rilascia la tabella.
Lavorare e creare tabelle esterne in Hive
Per impostazione predefinita, nella directory tabella Hive viene creato sotto la directory del database. L’eccezione è il database predefinito. La posizione utente / hive / warehouse non dispone di una directory in modo che le tabelle di database predefinite abbiano la directory creata direttamente in questa posizione. Si consiglia di creare tabelle esterne se non si desidera utilizzare la posizione predefinita.
Inizia il tuo corso gratuito di scienza dei dati
Hadoop, Data Science, Statistics& others
Una tabella esterna viene generalmente utilizzata quando i dati si trovano all’esterno dell’Hive.
Creiamo una tabella esterna usando la parola chiave “EXTERNAL” con il comando sottostante.
CREATE EXTERNAL TABLE if not exists students
(
Roll_id Int,
Class Int,
Name String,
Rank Int)
Row format delimited fields terminated by ‘,’
Location ‘/data/students_details’;
Uscita:
Una tabella esterna può anche essere creato copiando lo schema e i dati di una tabella esistente, con il seguente comando:
CREATE EXTERNAL TABLE if not exists students_v2 LIKE students
Location ‘/data/students_details’;
Se si omette l’ESTERNO parola chiave, quindi, la nuova tabella creata sarà esterno se la tabella di base è esterno. Allo stesso modo, se la tabella di base viene gestita con la parola chiave esterna, la nuova tabella creata sarà esterna.
Per identificare il tipo di tabella creata, è possibile utilizzare la clausola DESCRIBE FORMATTED. Alla fine della descrizione dettagliata della tabella, il tipo di tabella di output sarà “Tabella gestita”o “Tabella esterna”.
Le tabelle partizionate aiutano a dividere i dati in sotto-segmenti o partizioni logiche, rendendo le prestazioni delle query più efficienti. Una tabella partizionata può essere creata come si vede di seguito.
CREATE EXTERNAL TABLE if not exists students
( roll_id Int,
name String,
Rank Int)
partitioned by (class Int)
Row format delimited fields terminated by ‘\t’
Uscita:
Possono esserci casi in cui viene modificata la partizione o la struttura di una tabella esterna, quindi utilizzando questo comando le informazioni sui metadati possono essere aggiornate:
MSCK REPAIR TABLE external_table_name
1. Tabella esterna partizionata
Durante la creazione di una tabella esterna non partizionata, è richiesta la clausola LOCATION. Ma per una tabella esterna partizionata, non è richiesto. L’istruzione ALTER TABLE è necessaria per aggiungere partizioni insieme alla clausola LOCATION.
ALTER TABLE students ADD PARTITION (class =10)
Location ‘here://master_server/data/log_messages/2012/01/02’;
Da Hive v0. 8.0 in poi, più partizioni possono essere aggiunte nella stessa query. Inoltre, la posizione di una partizione può essere modificata dalla query sottostante, senza spostare o eliminare i dati dalla vecchia posizione.
ALTER TABLE students_v2 partition( class = 10)
Set location ‘s2n://buckets/students_v2/10’;
Per eliminare una partizione, viene utilizzata la query sottostante:
ALTER TABLE students DROP IF EXISTS PARTITION (class = 12);
Questo comando elimina i dati e i metadati della partizione per le tabelle gestite o interne. Tuttavia, per le tabelle esterne, i dati non vengono eliminati.
2. Operazioni sulla tabella esterna
Le operazioni come SELECT, JOINS, ORDER BY, GROUP BY, CLUSTER BY e altre sono implementate su tabelle esterne. Le tabelle esterne possono essere facilmente unite ad altre tabelle per eseguire complesse manipolazioni dei dati. I concetti di partizionamento, bucketing e indicizzazione sono implementati anche su tabelle esterne allo stesso modo delle tabelle gestite o interne. Tutte le proprietà di configurazione in Hive sono applicabili anche alle tabelle esterne. Ad esempio, impostando skip.intestazione.linea. Count = 1, possiamo saltare la riga di intestazione dal file di dati.
Tutti i formati di file come ORC, AVRO, TEXTFILE, SEQUENCE FILE o PARQUET sono supportati per le tabelle interne ed esterne di Hive. Durante la creazione di una tabella, la mappatura posizionale viene utilizzata per inserire i dati nella colonna e tale ordine viene mantenuto.
Tipi di dati nelle tabelle esterne: nelle tabelle esterne, i tipi di dati di raccolta sono supportati anche insieme a tipi di dati primitivi (come integer, string, character). È necessario specificare i delimitatori degli elementi dei tipi di dati di raccolta (come un array, una struttura e una mappa).
Quando utilizzare le tabelle esterne in Hive?
Generalmente, le tabelle interne vengono create in Hive. Ma per alcuni scenari, una tabella esterna può essere utile. Questi sono:
- Quando i dati vengono posizionati al di fuori della posizione Hive o HDFS, la creazione di una tabella esterna aiuta come gli altri strumenti che possono utilizzare la tabella, non pone alcun blocco su questi file.
- È possibile creare una tabella esterna quando i dati non sono presenti in nessuna tabella esistente (ad esempio, utilizzando la clausola SELECT).
- La tabella esterna deve essere creata se non vogliamo che Hive possieda i dati o abbia altri controlli dati.
- La tabella esterna impedisce anche qualsiasi perdita accidentale di dati, poiché quando si rilascia una tabella esterna, i dati di base non vengono eliminati. Questo agisce come una funzione di sicurezza nell’Alveare. Questo è il motivo per cui TRUNCATE non funzionerà anche per le tabelle esterne.
Caratteristiche
Ci sono alcune caratteristiche in Hive che sono disponibili solo per le tabelle gestite o esterne. Questi sono:
- Comandi come ARCHIVE / UNARCHIVE/TRUNCATE/CONCATENATE / MERGE funziona solo per le tabelle interne.
- L’ACID funziona solo per tabelle gestite o interne.
- La clausola DROP eliminerà solo i metadati per le tabelle esterne. Tuttavia, elimina i dati sottostanti anche per le tabelle interne.
- La memorizzazione nella cache dei risultati delle query è possibile solo per le tabelle gestite.
- Il vincolo di affidamento è consentito solo su tabelle esterne.
- Alcune funzionalità delle viste materializzate funzionano solo per le tabelle gestite.
Conclusione
In questo tutorial, abbiamo visto quando e come utilizzare le tabelle esterne in Hive. I punti salienti di questo tutorial sono creare uno sfondo sulle tabelle diverse dai dati gestiti e analizzati all’esterno dell’Hive.
Articoli consigliati
Questa è una guida alla tabella esterna in Hive. Qui discutiamo l’introduzione di tabelle esterne nell’alveare e le caratteristiche e le query. Si può anche passare attraverso i nostri altri articoli correlati per saperne di più
- Partizionamento dell’Alveare
- Mappa Unirsi Hive
- Hive Tipi di Dati
- Alveare di Installazione
- Guida all’Hive Cluster