Comparație între tabelele interne Hive și tabelele externe

Curioși să cunoașteți diferite tipuri de tabele Hive și cum se deosebesc între ele?

După cum am discutat elementele de bază ale tabelelor Hive în modelele de date Hive, să explorăm acum diferența majoră dintre tabelele interne și externe Hive.

În acest articol, vom discuta cele două tipuri diferite de tabele Hive care sunt tabelul intern (tabel gestionat) și tabelul extern. Articolul enumeră apoi diferențele dintre tabelele interne Hive și tabelele externe. Vom vedea, de asemenea, diferite cazuri în care putem utiliza aceste tabele Hive.

Așa că, să începem cu tabelele interne Hive și tabelele externe.

Rămâneți la curent cu cele mai recente tendințe tehnologice
Alăturați-vă DataFlair pe Telegram!!

Introducere la tabelele interne și externe Hive

Tabele interne și externe Hive

Fundamental, Hive cunoaște două tipuri diferite de tabele: Tabelul intern și tabelul extern. Tabelul intern este, de asemenea, cunoscut sub numele de tabel gestionat.

Potem identifica tabelele interne sau externe folosind instrucțiunea DESCRIBE FORMATTED table_name din Hive, care va afișa fie MANAGED_TABLE, fie EXTERNAL_TABLE în funcție de tipul de tabel.

Tabelă internă Hive

Hive deține datele pentru tabelele interne.

Este tabelul implicit din Hive. Atunci când utilizatorul creează o tabelă în Hive fără a o specifica ca fiind externă, atunci, în mod implicit, se creează o tabelă internă într-o anumită locație din HDFS.

În mod implicit, o tabelă internă va fi creată într-o cale de folder similară cu directorul /user/hive/warehouse din HDFS. Putem suprascrie locația implicită prin intermediul proprietății location în timpul creării tabelului.

Dacă renunțăm la tabelul sau partiția gestionată, datele tabelului și metadatele asociate cu acel tabel vor fi șterse din HDFS.

Hive External Table

Hive nu gestionează datele tabelului External.

Creăm un tabel extern pentru utilizare externă ca atunci când dorim să utilizăm datele în afara Hive.

Tabelele externe sunt stocate în afara directorului depozitului. Ele pot accesa date stocate în surse cum ar fi locații HDFS la distanță sau Azure Storage Volumes.

Când renunțăm la tabelul extern, atunci doar metadatele asociate tabelului vor fi șterse, datele tabelului rămân neatinse de Hive.

Potem crea tabelul extern prin specificarea cuvântului cheie EXTERNAL în instrucțiunea Hive create table.

Diferența dintre tabelul intern și tabelul extern Hive

Tabele interne și externe HiveTabele interne și externe Hive

Să vedem acum diferența dintre cele două tabele Hive. Diferențele majore dintre tabelele interne și externe din Hive sunt:

Semantica de încărcare

Semantica de încărcare variază în ambele tabele. Să vedem care este diferența în semantica de încărcare între tabelul intern și tabelul extern.

a. Tabel intern

Când încărcăm date într-un tabel intern, atunci Hive mută datele în directorul depozitului.

De exemplu:

Aici, în acest exemplu, creăm un tabel ‘internaldemo’. Când încărcăm date în tabelul ‘internaldemo’, atunci Hive mută datele în directorul depozitului.

Învățați instalarea Apache Hive pe Ubuntu pentru a rula interogări Hive.

create internal table - hive internal and external table

Acum, încărcăm date în tabelul intern creat mai sus. load data into internal table - hive internal and external tables

La descrierea tabelului, vedem că datele tabelului sunt mutate în directorul Hive warehouse.describe internal table - hive internal and external tables

b. Tabel extern

Cu ajutorul cuvântului cheie EXTERNAL, Hive știe că nu gestionează datele tabelului, așa că nu mută datele în directorul său de depozit. Hive nici măcar nu verifică dacă locația externă în momentul în care este definită există sau nu.

De exemplu:

În acest exemplu, creăm o tabelă externă, ‘external_demo’ pe locația specificată care este ‘/home/dataflair/’. La încărcarea datelor în tabelul extern, Hive nu mută datele tabelului în directorul său de depozit.

create external table - hive internal and external tables

Acum, încărcăm datele în tabelul extern creat mai sus. încărcați datele în tabelul extern - hive internal and external tables

La parcurgerea tabelului, putem observa că datele din tabelul Hive nu sunt mutate în directorul depozitului Hive. Ele sunt stocate în locația specificată în timpul creării unui tabel. descrieți tabelul extern - tabelele interne și externe hive

Semantica drop

Ca și semantica de încărcare, și semantica drop variază în ambele tabele. Să vedem care este diferența în semantica drop între tabelul intern și tabelul extern.

a. Tabel intern

Dropping-ul tabelului intern va șterge datele tabelului, precum și metadatele asociate tabelului.

De exemplu:

În acest exemplu, facem dropping-ul tabelului gestionat ‘internaldemo’. Puteți vedea că se vor șterge atât metadatele tabelului, cât și datele tabelului.

drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

Datele tabelului sunt, de asemenea, șterse din HDFS.

b. Tabel extern

Îndepărtarea tabelului extern va șterge doar metadatele tabelului. Conținutul tabelului rămâne neatins.

De exemplu:

În acest exemplu, putem vedea că, la ștergerea tabelului extern „demo extern”, conținutul tabelului este încă prezent în locația HDFS.

scoaterea tabelului extern - hive tables

localizarea tabelului extern - hive tables

Suport TRUNCATE

Comanda TRUNCATE funcționează numai pentru tabelul intern.

De exemplu:

În acest exemplu, încercăm să folosim comanda truncate cu tabelul ‘externaldemo’. Vom primi un mesaj de eroare care spune ‘Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional funcționează numai pentru tabelul intern. Nu funcționează pentru tabelul extern.

Query Result Caching

Query Result Caching care salvează rezultatele unei interogări Hive executate pentru a fi reutilizate în interogări ulterioare funcționează doar pentru tabelul intern.

Acum, acestea sunt câteva diferențe între tabelul intern Hive și tabelul extern.

Să vedem acum când să folosim care tabel Hive.

Când să folosim tabelul intern și tabelul extern?

Tabela internă Hive

Potem folosi tabela internă în cazurile:

  • Când generăm tabele temporare.
  • Când este necesar ca Hive să gestioneze ciclul de viață al tabelului.
  • Și când nu dorim datele din tabel după ștergere.

Hive External Table

Potem folosi tabelul extern în cazurile:

  • Când nu creăm tabelul pe baza tabelului existent.
  • Când este necesar să folosim date din afara Hive. De exemplu, fișierele de date sunt citite și procesate de un program existent care nu blochează fișierele.
  • Când nu dorim să ștergem complet datele tabelului chiar și după DROP.
  • Când datele nu trebuie să fie deținute de Hive.

Deci, toate acestea au fost în tabelele interne și externe Hive. Sper că v-au plăcut explicațiile noastre.

Concluzie

După ce am citit articolul, putem concluziona că tabelele Hive sunt de două tipuri- tabelul intern, cunoscut și sub numele de tabel gestionat, și tabelul extern.

Datele din tabelul intern sunt gestionate de Hive. Hive nu este responsabil pentru gestionarea datelor tabelului External.

La ștergerea tabelului intern Hive, atât datele tabelului, cât și metadatele se șterg, iar la ștergerea tabelului extern Hive, doar metadatele tabelului se vor șterge.

Vezi și-

  • Diferite moduri de a configura Hive Metastore
  • Cele mai bune cărți Apache Hive pentru a învăța Hive pentru începători

Vreo întrebare în timp ce lucrați cu tabelele interne și externe Hive? Întrebați mai jos.

Învățați în continuare!!!

Lasă un răspuns

Adresa ta de email nu va fi publicată.