Vergelijking tussen interne en externe Hive-tabellen

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 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

hive interne en externe tabellenhive interne en externe tabellen

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.

maak interne tabel aan - hive interne en externe tabel

Nu gegevens laden in de hierboven gemaakte interne tabel. gegevens laden in interne tabel - hive interne en externe tabellen

Bij het beschrijven van de tabel zien we dat de tabelgegevens worden verplaatst naar de Hive-map van het magazijn.interne tabel beschrijven - hive interne en externe tabellen

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.

maak externe tabel aan - hive interne en externe tabellen

Nu gegevens laden in de externe tabel die hierboven is aangemaakt. gegevens laden in externe tabel - hive interne en externe tabellen

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.beschrijf externe tabel - hive interne en externe tabellen

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.

drop interne tabel - hive interne en externe tabellen

locating hive interne tabel - hive interne en externe tabellen

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.

verwijderen externe tabel - hive tabellen

loceren externe tabel - hive tabellen

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’.

truncate external table - hive tables

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!!

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.