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
- Tabelă internă Hive
- Hive External Table
- Diferența dintre tabelul intern și tabelul extern Hive
- Semantica de încărcare
- a. Tabel intern
- b. Tabel extern
- Semantica drop
- a. Tabel intern
- b. Tabel extern
- Suport TRUNCATE
- ACID Support
- Query Result Caching
- Când să folosim tabelul intern și tabelul extern?
- Tabela internă Hive
- Hive External Table
- Concluzie
Introducere la tabelele 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
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.
Acum, încărcăm date în tabelul intern creat mai sus.
La descrierea tabelului, vedem că datele tabelului sunt mutate în directorul Hive warehouse.
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.
Acum, încărcăm datele în tabelul extern creat mai sus.
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.
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.
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.
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’.
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!!!