Sammenligning mellem Hive interne tabeller vs eksterne tabeller

Nysgerrig efter at kende de forskellige typer Hive-tabeller, og hvordan de adskiller sig fra hinanden?

Som vi har diskuteret det grundlæggende om Hive-tabeller i Hive-datamodeller, skal vi nu udforske den største forskel mellem interne og eksterne Hive-tabeller.

I denne artikel vil vi diskutere de to forskellige typer Hive-tabeller, som er interne tabeller (administreret tabel) og eksterne tabeller. Artiklen opremser derefter forskellene mellem Hive interne tabeller og eksterne tabeller. Vi vil også se forskellige tilfælde, hvor vi kan bruge disse Hive-tabeller.

Så lad os starte med Hive interne tabeller og eksterne tabeller.

Hold dig opdateret med de nyeste teknologiske trends
Join DataFlair on Telegram!!

Introduktion til Hive interne og eksterne tabeller

hive interne og eksterne tabeller

Fundamentalt set kender Hive to forskellige typer tabeller: Interne tabel og den eksterne tabel. Den interne tabel er også kendt som den administrerede tabel.

Vi kan identificere de interne eller eksterne tabeller ved hjælp af DESCRIBE FORMATTED table_name-anvisningen i Hive, som viser enten MANAGED_TABLE eller EXTERNAL_TABLE afhængigt af tabeltypen.

Hive intern tabel

Hive ejer dataene til de interne tabeller.

Det er standardtabellen i Hive. Når brugeren opretter en tabel i Hive uden at angive den som ekstern, oprettes der som standard en intern tabel på et bestemt sted i HDFS.

Som standard oprettes en intern tabel i en mappesti, der svarer til /user/hive/warehouse-mappen i HDFS. Vi kan tilsidesætte standardplaceringen ved hjælp af egenskaben location under oprettelsen af tabellen.

Hvis vi dropper den administrerede tabel eller partition, slettes tabeldataene og de metadata, der er knyttet til tabellen, fra HDFS.

Hive ekstern tabel

Hive administrerer ikke dataene i den eksterne tabel.

Vi opretter en ekstern tabel til ekstern brug, som når vi ønsker at bruge dataene uden for Hive.

Eksterne tabeller gemmes uden for lagermappen. De kan få adgang til data, der er gemt i kilder som f.eks. eksterne HDFS-steder eller Azure Storage Volumes.

Når vi dropper den eksterne tabel, slettes kun de metadata, der er knyttet til tabellen, og tabeldataene forbliver uberørte af Hive.

Vi kan oprette den eksterne tabel ved at angive nøgleordet EXTERNAL i Hive create table-erklæringen.

Forskellen mellem Hive intern og ekstern tabel

hive interne og eksterne tabellerhive interne og eksterne tabellerhive interne og eksterne tabeller

Lad os nu se forskellen mellem de to Hive-tabeller. De største forskelle i de interne og eksterne tabeller i Hive er:

LOAD-semantik

Last-semantikken varierer i begge tabeller. Lad os se forskellen i load-semantik mellem den interne tabel og den eksterne tabel.

a. Intern tabel

Når vi indlæser data i en intern tabel, flytter Hive data ind i lagermappen.

For eksempel:

Her i dette eksempel opretter vi en tabel ‘internaldemo’. Når vi indlæser data i tabellen ‘internaldemo’, flytter Hive dataene til lagermappen.

Lær Apache Hive Installation på Ubuntu for at køre Hive-forespørgsler.

Create internal table - hive internal and external table

Nu indlæser vi data i den interne tabel, der er oprettet ovenfor. indlæs data i intern tabel - hive interne og eksterne tabeller

Ved beskrivelse af tabellen ser vi, at tabellens data flyttes til Hive warehouse-mappen.beskrives intern tabel - hive interne og eksterne tabeller

b. Ekstern tabel

Med nøgleordet EXTERNAL ved Hive, at den ikke administrerer tabellens data, så den flytter ikke data til sin warehouse-mappe. Hive kontrollerer ikke engang, om den eksterne placering på det tidspunkt, hvor den defineres, eksisterer eller ej.

For eksempel:

I dette eksempel opretter vi en ekstern tabel, “external_demo”, på den angivne placering, som er “/home/dataflair/”. Ved indlæsning af data til den eksterne tabel flytter Hive ikke tabeldata til sin warehouse-mappe.

Opret ekstern tabel - Hive interne og eksterne tabeller

Nu indlæses data til den eksterne tabel, der er oprettet ovenfor. indlæs data til ekstern tabel - hive interne og eksterne tabeller

Når vi gennemser tabellen, kan vi se, at Hive-tabellens data ikke er flyttet til Hive warehouse-mappen. De gemmes på den placering, der er angivet under oprettelsen af en tabel. Beskriv ekstern tabel - Hive interne og eksterne tabeller

DROP-semantik

Som load-semantik varierer drop-semantik også i begge tabellerne. Lad os se forskellen i drop-semantik mellem den interne tabel og den eksterne tabel.

a. Intern tabel

Drop af den interne tabel sletter tabellens data samt de metadata, der er knyttet til tabellen.

For eksempel:

I dette eksempel dropper vi den administrerede tabel “internaldemo”. Du kan se, at det vil slette både tabellens metadata og tabeldata.

drop intern tabel - hive interne og eksterne tabeller

lokalisering af hive intern tabel - hive interne og eksterne tabeller

Tabeldata bliver også slettet fra HDFS.

b. Ekstern tabel

Sletning af den eksterne tabel sletter kun tabelmetadata. Bordets indhold forbliver uberørt.

For eksempel:

I dette eksempel kan vi se, at ved sletning af det eksterne bord “external demo” er indholdet af bordet stadig til stede på HDFS-placeringen.

nedlæggelse af ekstern tabel - hive-tabeller

lokalisering af ekstern tabel - hive-tabeller

TRUNCATE-understøttelse

TRUNCATE-kommandoen fungerer kun for den interne tabel.

For eksempel:

I dette eksempel forsøger vi at bruge truncate-kommandoen med tabellen ‘externaldemo’. Vi får en fejlmeddelelse, der siger ‘Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional fungerer kun for den interne tabel. De virker ikke for den eksterne tabel.

Query Result Caching

Query Result Caching, der gemmer resultaterne af en udført Hive-forespørgsel til genbrug ved efterfølgende forespørgsler, virker kun for den interne tabel.

Der er altså nogle forskelle mellem Hives interne tabel og den eksterne tabel.

Lad os nu se, hvornår man skal bruge hvilken Hive-tabel.

Hvornår skal man bruge intern og ekstern tabel?

Hive intern tabel

Vi kan bruge den interne tabel i følgende tilfælde:

  • Når vi genererer midlertidige tabeller.
  • Når det kræves, at Hive skal administrere tabellens livscyklus.
  • Og når vi ikke ønsker tabeldata efter sletning.

Hive ekstern tabel

Vi kan bruge den eksterne tabel i følgende tilfælde:

  • Når vi ikke opretter tabellen baseret på den eksisterende tabel.
  • Når det er påkrævet at bruge data uden for Hive. F.eks. læses og behandles datafilerne af et eksisterende program, der ikke låser filerne.
  • Når vi ikke ønsker at slette tabellens data helt, selv efter DROP.
  • Når dataene ikke skal være egne af Hive.

Så, dette var alt i Hive interne og eksterne tabeller. Jeg håber, du kan lide vores forklaring.

Slutning

Efter at have læst artiklen kan vi konkludere, at Hive-tabellerne er af to typer – intern tabel, også kendt som den administrerede tabel, og den eksterne tabel.

Den interne tabel data bliver administreret af Hive. Hive er ikke ansvarlig for forvaltningen af dataene i den eksterne tabel.

Ved sletning af den interne Hive-tabel slettes både tabeldataene og metadataene, og ved sletning af den eksterne Hive-tabel slettes kun tabellernes metadata.

Se også-

  • Different Ways to Configure Hive Metastore
  • Best Apache Hive Books to learn Hive for beginners

Any queries while working with hive internal and external tables? Spørg nedenfor.

Keep Learning!!!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.