Nieuwsgierig naar de verschillende soorten Hive-tabellen en hoe deze van elkaar verschillen?
Na de basisprincipes van Hive-tabellen in Hive Data Models te hebben besproken, gaan we nu in op het belangrijkste verschil tussen interne en externe Hive-tabellen.
In dit artikel bespreken we de twee verschillende soorten Hive-tabellen, namelijk interne (Managed Table) en externe (External Table). Het artikel geeft vervolgens een overzicht van de verschillen tussen Hive Interne tabellen en Externe tabellen. We zullen ook verschillende gevallen zien waarin we deze Hive-tabellen kunnen gebruiken.
Dus, laten we beginnen met Hive interne tabellen en externe tabellen.
Blijf op de hoogte van de nieuwste technologische trends
Join DataFlair op Telegram!
- Inleiding tot Hive interne en externe tabellen
- Hive Interne tabel
- Hive Externe tabel
- Verschil tussen Hive interne en externe tabel
- LOAD semantiek
- a. Interne tabel
- b. Externe tabel
- DROP semantiek
- a. Interne tabel
- b. Externe tabel
- TRUNCATE-ondersteuning
- ACID Support
- Query Result Caching
- Wanneer gebruiken we de interne en de externe tabel?
- Hive Interne tabel
- Hive Externe Tabel
- Conclusie
Inleiding tot Hive interne en externe tabellen
Fundamenteel kent Hive twee verschillende soorten tabellen: Interne tabel en de Externe tabel. De Interne tabel staat ook bekend als de beheerde tabel.
We kunnen de interne of Externe tabellen identificeren met behulp van het DESCRIBE FORMATTED table_name
statement in de Hive, dat afhankelijk van het tabeltype MANAGED_TABLE
of EXTERNAL_TABLE
weergeeft.
Hive Interne tabel
Hive is eigenaar van de gegevens voor de interne tabellen.
Hive is de standaardtabel in Hive. Wanneer de gebruiker een tabel in Hive maakt zonder deze als extern te specificeren, dan wordt standaard een interne tabel gemaakt op een specifieke locatie in HDFS.
Standaard wordt een interne tabel gemaakt in een mappad vergelijkbaar met /user/hive/warehouse directory van HDFS. We kunnen de standaard locatie overschrijven door de locatie eigenschap tijdens het maken van de tabel.
Als we de beheerde tabel of partitie laten vallen, worden de tabelgegevens en de metagegevens die aan die tabel zijn gekoppeld uit het HDFS verwijderd.
Hive Externe tabel
Hive beheert de gegevens van de Externe tabel niet.
We maken een externe tabel voor extern gebruik als wanneer we de gegevens buiten de Hive willen gebruiken.
Externe tabellen worden opgeslagen buiten de map van het magazijn. Ze kunnen toegang krijgen tot gegevens die zijn opgeslagen in bronnen zoals externe HDFS-locaties of Azure Storage Volumes.
Wanneer we de externe tabel laten vallen, dan worden alleen de metagegevens die aan de tabel zijn gekoppeld verwijderd, de tabelgegevens blijven onaangeroerd door Hive.
We kunnen de externe tabel maken door het sleutelwoord EXTERNAL op te geven in het Hive create table statement.
Verschil tussen Hive interne en externe tabel
Laten we nu eens kijken naar het verschil tussen beide Hive-tabellen. De belangrijkste verschillen tussen de interne en externe tabellen in Hive zijn:
LOAD semantiek
De Load semantiek verschilt in beide tabellen. Laten we eens kijken naar het verschil in belasting semantiek tussen de interne tabel en de externe tabel.
a. Interne tabel
Wanneer we gegevens in een interne tabel laden, dan verplaatst Hive gegevens naar de magazijnmap.
Voorbeeld:
Hier in dit voorbeeld maken we een tabel ‘internaldemo’. Wanneer we gegevens in de tabel ‘internaldemo’ laden, verplaatst Hive de gegevens naar de magazijnmap.
Leer Apache Hive installeren op Ubuntu om Hive-query’s uit te voeren.
Nu gegevens laden in de hierboven gemaakte interne tabel.
Bij het beschrijven van de tabel zien we dat de tabelgegevens worden verplaatst naar de Hive-map van het magazijn.
b. Externe tabel
Met het trefwoord EXTERNAL weet Hive dat het de tabelgegevens niet beheert en verplaatst het dus geen gegevens naar de magazijnmap. Hive controleert zelfs niet of de externe locatie op het moment dat deze wordt gedefinieerd, bestaat of niet.
Voorbeeld:
In dit voorbeeld maken we een externe tabel, ‘external_demo’ op de opgegeven locatie die ‘/home/dataflair/’ is. Wanneer de gegevens in de externe tabel worden geladen, verplaatst de Hive de tabelgegevens niet naar de magazijnmap.
Nu gegevens laden in de externe tabel die hierboven is aangemaakt.
Bij het doorbladeren van de tabel kunnen we zien dat de gegevens van de Hive-tabel niet naar de directory van het Hive-magazijn zijn verplaatst. Ze worden opgeslagen op de locatie die is opgegeven bij het maken van een tabel.
DROP semantiek
Net als de laad semantiek, varieert de drop semantiek ook in beide tabellen. Laten we eens kijken naar het verschil in drop semantiek tussen de interne tabel en de externe tabel.
a. Interne tabel
Het laten vallen van de interne tabel zal de tabelgegevens verwijderen, evenals de metagegevens die aan de tabel zijn gekoppeld.
Voorbeeld:
In dit voorbeeld laten we de beheerde tabel ‘internaldemo’ vallen. U kunt zien dat zowel de metagegevens van de tabel als de tabelgegevens worden verwijderd.
De tabelgegevens worden ook uit de HDFS verwijderd.
b. Externe tabel
Door de externe tabel te verwijderen, worden alleen de metagegevens van de tabel verwijderd. De inhoud van de tabel blijft onaangeroerd.
Voorbeeld:
In dit voorbeeld kunnen we zien dat bij het verwijderen van de externe tabel ‘externe demo’, de inhoud van de tabel nog steeds aanwezig is op de HDFS locatie.
TRUNCATE-ondersteuning
Het TRUNCATE-commando werkt alleen voor de interne tabel.
Voorbeeld:
In dit voorbeeld proberen we het truncate-commando te gebruiken met de tabel ‘externaldemo’. We krijgen een foutmelding met de tekst ‘Cannot truncate non-managed table externaldemo’.
ACID Support
ACID/transactional werkt alleen voor de interne tabel. Ze werken niet voor de externe tabel.
Query Result Caching
Query Result Caching die de resultaten van een uitgevoerde Hive query opslaat voor hergebruik bij volgende queries werkt alleen voor de interne tabel.
Dit zijn dus enkele verschillen tussen de Hive interne tabel en de externe tabel.
Laten we nu eens kijken wanneer we welke Hive tabel moeten gebruiken.
Wanneer gebruiken we de interne en de externe tabel?
Hive Interne tabel
We kunnen de interne tabel gebruiken in gevallen:
- Bij het genereren van tijdelijke tabellen.
- Wanneer vereist is dat Hive de levenscyclus van de tabel moet beheren.
- En wanneer we geen tabelgegevens na verwijdering willen hebben.
Hive Externe Tabel
We kunnen de externe tabel gebruiken in gevallen:
- Wanneer we de tabel niet maken op basis van de bestaande tabel.
- Wanneer het nodig is om gegevens buiten Hive te gebruiken. Bijvoorbeeld, de gegevensbestanden worden gelezen en verwerkt door een bestaand programma dat de bestanden niet vergrendelt.
- Wanneer we de tabelgegevens niet volledig willen verwijderen, zelfs niet na DROP.
- Wanneer de gegevens niet door Hive mogen worden bezeten.
Zo, dit was allemaal in Hive interne en externe tabellen. Ik hoop dat je onze uitleg.
Conclusie
Na het lezen van het artikel, kunnen we concluderen dat de Hive tabellen zijn van twee soorten- interne tabel, ook wel bekend als de beheerde tabel, en de externe tabel.
De interne tabel gegevens worden beheerd door de Hive. Hive is niet verantwoordelijk voor het beheer van de gegevens van de externe tabel.
Bij het verwijderen van de Hive interne tabel, de tabel gegevens en de metagegevens beide worden verwijderd en bij het verwijderen van de Hive externe tabel, alleen de tabel metagegevens zal verwijderen.
Zie ook-
- Verschillende manieren om Hive Metastore configureren
- Beste Apache Hive Boeken om Hive te leren voor beginners
Enige vragen tijdens het werken met hive interne en externe tabellen? Vraag hieronder.
Keep Learning!!