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 intern tabel
- Hive ekstern tabel
- Forskellen mellem Hive intern og ekstern tabel
- LOAD-semantik
- a. Intern tabel
- b. Ekstern tabel
- DROP-semantik
- a. Intern tabel
- b. Ekstern tabel
- TRUNCATE-understøttelse
- ACID Support
- Query Result Caching
- Hvornår skal man bruge intern og ekstern tabel?
- Hive intern tabel
- Hive ekstern tabel
- Slutning
Introduktion til 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
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.
Nu indlæser vi data i den interne tabel, der er oprettet ovenfor.
Ved beskrivelse af tabellen ser vi, at tabellens data flyttes til Hive warehouse-mappen.
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.
Nu indlæses data til den eksterne tabel, der er oprettet ovenfor.
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.
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.
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.
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’.
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!!!