Jämförelse mellan Hive interna tabeller och externa tabeller

Nyfiken på att känna till olika typer av Hive-tabeller och hur de skiljer sig från varandra?

Som vi diskuterade grunderna för Hive-tabeller i Hive-datamodellerna ska vi nu utforska de stora skillnaderna mellan interna och externa Hive-tabeller.

I den här artikeln kommer vi att diskutera de två olika typerna av Hive-tabeller, nämligen interna tabeller (hanterade tabeller) och externa tabeller. Artikeln listar sedan skillnaderna mellan Hive interna tabeller och externa tabeller. Vi kommer också att se olika fall där vi kan använda dessa Hive-tabeller.

Så, låt oss börja med Hive interna tabeller och externa tabeller.

Håll dig uppdaterad om de senaste tekniktrenderna
Gäng med DataFlair på Telegram!!

Introduktion till Hives interna och externa tabeller

Hives interna och externa tabeller

Fundamentalt sett känner Hive till två olika typer av tabeller: Interna tabeller och externa tabeller. Den interna tabellen är också känd som den hanterade tabellen.

Vi kan identifiera de interna eller externa tabellerna med hjälp av DESCRIBE FORMATTED table_name-anvisningen i Hive, som visar antingen MANAGED_TABLE eller EXTERNAL_TABLE beroende på tabelltyp.

Hive Internal Table

Hive äger data för de interna tabellerna.

Det är standardtabellen i Hive. När användaren skapar en tabell i Hive utan att ange den som extern skapas som standard en intern tabell på en viss plats i HDFS.

Som standard skapas en intern tabell i en mapp som liknar /user/hive/warehouse-katalogen i HDFS. Vi kan åsidosätta standardplaceringen med egenskapen location under skapandet av tabellen.

Om vi släpper det hanterade bordet eller den hanterade partitionen raderas tabelldata och metadata som är associerade med den tabellen från HDFS.

Hive External Table

Hive hanterar inte data i den externa tabellen.

Vi skapar en extern tabell för extern användning som när vi vill använda data utanför Hive.

Externa tabeller lagras utanför lagerkatalogen. De kan få tillgång till data som lagras i källor som till exempel fjärr-HDFS-platser eller Azure Storage Volumes.

När vi släpper den externa tabellen raderas endast de metadata som är kopplade till tabellen, tabellens data förblir orörda av Hive.

Vi kan skapa den externa tabellen genom att ange nyckelordet EXTERNAL i Hive create table statement.

Skillnaden mellan Hive intern och extern tabell

hive interna och externa tabellerhive interna och externa tabellerhive interna och externa tabeller

Låtsas vi nu se skillnaden mellan de båda Hive tabellerna. De största skillnaderna mellan de interna och externa tabellerna i Hive är:

LOAD-semantik

Laddningssemantiken varierar i båda tabellerna. Låt oss se skillnaden i lastsemantik mellan den interna tabellen och den externa tabellen.

a. Intern tabell

När vi laddar data till en intern tabell flyttar Hive data till lagerkatalogen.

Till exempel:

Här i det här exemplet skapar vi en tabell ”internaldemo”. När vi laddar data till tabellen ”internaldemo” flyttar Hive data till lagerkatalogen.

Lär dig Apache Hive Installation på Ubuntu för att köra Hive-frågor.

skapa intern tabell - hive intern och extern tabell

Nu laddar vi data till den interna tabellen som skapats ovan. ladda data till intern tabell - hive internal and external tables

När vi beskriver tabellen ser vi att tabellens data flyttas till Hive warehouse-katalogen.beskriv intern tabell - hive internal and external tables

b. Extern tabell

Med nyckelordet EXTERNAL vet Hive att den inte hanterar tabellens data, så den flyttar inte data till sin lagerkatalog. Hive kontrollerar inte ens om den externa platsen vid den tidpunkt då den definieras existerar eller inte.

Till exempel:

I det här exemplet skapar vi en extern tabell, ”external_demo” på den angivna platsen som är ”/home/dataflair/”. När data laddas till den externa tabellen flyttar Hive inte tabelldata till sin lagerkatalog.

skapa extern tabell - Hive interna och externa tabeller

Nu laddar vi data till den externa tabellen som skapats ovan. ladda data till extern tabell - hive internal and external tables

När vi bläddrar i tabellen kan vi se att Hive-tabellens data inte flyttas till Hive warehouse-katalogen. De lagras på den plats som anges när en tabell skapas. beskriv extern tabell - hive interna och externa tabeller

DROP-semantik

Likt laddningssemantiken varierar också drop-semantiken i båda tabellerna. Låt oss se skillnaden i drop-semantik mellan den interna tabellen och den externa tabellen.

a. Intern tabell

Om vi släpper den interna tabellen raderas tabellens data och metadata som är kopplade till tabellen.

Till exempel:

I det här exemplet släpper vi den hanterade tabellen ”internaldemo”. Du kan se att både tabellens metadata och tabellens data raderas.

Drop internal table - hive internal and external tables

locating hive internal table - hive internal and external tables

Tabellens data raderas också från HDFS.

b. Extern tabell

Om den externa tabellen tas endast tabellmetadata bort. Tabellens innehåll förblir orört.

Till exempel:

I det här exemplet kan vi se att när den externa tabellen ”external demo” raderas finns tabellens innehåll fortfarande kvar på HDFS-platsen.

Släpp av extern tabell - hive tabeller

Lokalisering av extern tabell - hive tabeller

TRUNCATE-stöd

Trunkera-kommandot fungerar endast för interna tabeller.

Till exempel:

I det här exemplet försöker vi använda trunkera-kommandot med tabellen ”externaldemo”. Vi får ett felmeddelande där det står ”Cannot truncate non-managed table externaldemo”.

truncate external table - hive tables

ACID Support

ACID/transactional fungerar endast för den interna tabellen. De fungerar inte för externa tabeller.

Query Result Caching

Query Result Caching som sparar resultaten av en utförd Hive-fråga för återanvändning i efterföljande frågor fungerar endast för den interna tabellen.

Det här är alltså några skillnader mellan Hives interna tabell och den externa tabellen.

Låt oss nu se när man ska använda vilken Hive-tabell.

När man ska använda intern och extern tabell?

Hive intern tabell

Vi kan använda den interna tabellen i följande fall:

  • När vi genererar tillfälliga tabeller.
  • När det krävs att Hive ska hantera tabellens livscykel.
  • Och när vi inte vill ha tabellens data efter att den har tagits bort.

Hive External Table

Vi kan använda den externa tabellen i följande fall:

  • När vi inte skapar tabellen utifrån en befintlig tabell.
  • När det krävs att vi använder data utanför Hive. Till exempel läses och bearbetas datafilerna av ett befintligt program som inte låser filerna.
  • När vi inte vill radera tabellens data helt och hållet även efter DROP.
  • När data inte ska vara egna av Hive.

Så, det här var allt i Hives interna och externa tabeller. Jag hoppas att du gillar vår förklaring.

Slutsats

Efter att ha läst artikeln kan vi dra slutsatsen att Hive-tabellerna är av två typer – interna tabeller, även kända som hanterade tabeller, och externa tabeller.

Den interna tabellens data hanteras av Hive. Hive ansvarar inte för hanteringen av data i den externa tabellen.

När den interna tabellen i Hive raderas, raderas både tabellens data och metadata och när den externa tabellen i Hive raderas, raderas endast tabellens metadata.

Se också-

  • Olika sätt att konfigurera Hive Metastore
  • Bästa Apache Hive-böcker för att lära sig Hive för nybörjare

Några frågor när du arbetar med Hive interna och externa tabeller? Fråga nedan.

Keep Learning!!

Lämna ett svar

Din e-postadress kommer inte publiceras.