Hive Create Table: Intern, Ændre og Slip med Eksempler

⚡ Smart opsummering

Oprettelse, ændring og sletningping Tabeller i Apache Hive bruger den velkendte DDL i SQL-stil, men resultatet afhænger af, om tabellen er intern, som Hive ejer, eller ekstern, som blot beskriver filer.

  • 🧱 OPRET TABEL: Én sætning definerer kolonnerne, rækkeformatet og eventuelt lagringsplaceringen for en Hive-tabel.
  • 🏷️ ÆNDRINGSTABEL: RENAME ændrer tabelnavnet, og ADD COLUMNS eller CHANGE COLUMN redigerer skemaet uden at genindlæse data.
  • 🗑️ DROP TABEL: Dropping En intern tabel sletter både skema og data, mens dropping En ekstern tabel fjerner kun metadataene.
  • 🔒 Internt ejes: En intern eller administreret tabel findes under warehouse-mappen, og Hive styrer dens fulde livscyklus.
  • 🔗 Eksternt refereres: En ekstern tabel peger på filer, som andre værktøjer også læser, så disse filer overlever drop'et.
  • 🔎 Bekræft typen: BESKRIV FORMATTED-rapporter MANAGED_TABLE eller EXTERNAL_TABLE, hvilket fjerner gætværk før en drop.

Hive-kommandoer til at oprette, ændre og slette tabeller med eksempler

Tabelhandlinger såsom oprettelse, ændring og sletningping Tabeller i Hive kan ses i denne gennemgang. Hver handling vises først som en livesession og derefter som en genanvendelig sætning.

Sådan opretter, ændrer og sletter du en tabel i Hive

I nedenstående skærmbillede opretter vi en tabel med kolonner og ændrer tabelnavnet.

  1. Opretter tabellen guru_sample med to kolonnenavne såsom "empid" og "empname"
  2. Visning af tabeller i guru99-databasen
  3. guru_sample vises under tabeller
  4. Ændring af tabellen “guru_sample” til “guru_sampleNew”
  5. Igen, når du udfører kommandoen "show", vil den vise det nye navn guru_sampleNew

Sessionen nedenfor kører alle fem trin i rækkefølge kl. bistade> prompten, og de to SHOW TABLES-kald før og efter omdøbningen gør effekten synlig.

Hive-session opretter guru_sample og omdøber den til guru_sampleNew

Dropping tabel guru_sampleNy:

En enkelt DROP TABLE-sætning fjerner den omdøbte tabel, og Hive svarer med OK.

Dråbe af bistadeskalping guru_sampleNy tabel med et OK-svar

Hive CREATE TABLE Syntaks og almindelige klausuler

Eksemplet ovenfor bruger den kortest mulige form. Den dokumenterede sætning accepterer flere valgfrie klausuler, og hver enkelt bestemmer noget, som eksemplet lader være som standard.

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  [(col_name data_type [COMMENT col_comment], ...)]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type, ...)]
  [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS]
  [ROW FORMAT row_format]
  [STORED AS file_format]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)];
Klausul Hvad den kontrollerer
EKSTERNT Opretter en ekstern tabel, så DROP lader datafilerne være på plads
MIDLERTIDIG Opretter en sessionsbestemt tabel, der forsvinder, når sessionen slutter
HVIS IKKE FINNES Undertrykker fejlen, når en tabel med det navn allerede findes
OPDELT AF Opdeler tabellen i én mappe pr. nøgleværdi
KLYNGERET EFTER … I n SPANDE Hasher rækker ind i et fast antal filer
RÆKKEFORMAT / GEMT SOM Angiver afgrænseren eller SerDe og filformatet, f.eks. TEKSTFIL, ORC eller Parquet
ADRESSE Peger tabellen på en specifik HDFS-sti i stedet for lagerets standardsti
TBL-EJENDOMME Vedhæfter metadata-nøgleværdipar, inklusive external.table.purge

En relateret formular, OPRET TABEL ny_tabel SOM eksisterende_tabel, kopierer et skema uden at kopiere nogen rækker. Strukturelle klausuler som PARTITIONERET AF og KLUSTERET AF er dækket i detaljer i vejledningen til Bistadeskillevægge og spande.

Tabeltyper og dens anvendelse

Når det kommer til tabeller, er det ligesom den måde, vi opretter i traditionelle relationelle databaser. Funktioner som filtrering og joins kan udføres på tabellerne.

Hive håndterer to typer tabelstrukturer, interne og eksterne tabeller, afhængigt af indlæsning og design af skemaet i HiveValget er ikke kosmetisk: det afgør, hvem der ejer datafilerne, og hvad der sker med dem, når tabellen slettes.

Interne tabeller i Hive

  • En intern tabel er tæt koblet. I denne type tabel skal vi først oprette tabellen og indlæse dataene.
  • Vi kan kalde dette for data på skemaet.
  • Ved dråbeping denne tabel, vil både data og skema blive fjernet.
  • Den gemte placering af denne tabel vil være på /user/hive/warehouse.
  • Interne tabeller kaldes også administrerede tabeller, og kun de understøtter TRUNCATE-, ARCHIVE-, MERGE-, CONCATENATE- og ACID-transaktioner.

Hvornår skal man vælge internt bord?

  • Hvis behandlingsdataene er tilgængelige i det lokale filsystem
  • Hvis vi ønsker, at Hive skal administrere hele livscyklussen af ​​data, inklusive sletningen

Eksempelkodestykke til internt bord

  1. Sådan opretter du den interne tabel
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Indlæs dataene i den interne tabel
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Vis indholdet af tabellen
        Hive>select * from guruhive_internaltable;
  4. For at droppe den interne tabel
        Hive>DROP TABLE guruhive_internaltable;

Hvis du har slettet guruhive_internaltable, inklusive dens metadata og data, vil filerne blive slettet fra Hive. Medmindre PURGE er angivet, flyttes filerne til HDFS-papirkurven i stedet for at blive fjernet med det samme.

Fra det følgende skærmbillede kan vi se outputtet af alle fire sætninger i én session, der slutter med det vellykkede drop.

Oprettelse, indlæsning, forespørgsel og slip af Hive-sessionping guruhive_internaltable

I ovenstående kode og fra skærmbilledet gør vi følgende:

  • Opret den interne tabel
  • Indlæs dataene i den interne tabel
  • Vis indholdet af tabellen
  • For at droppe den interne tabel

Eksterne tabeller i Hive

  • Ekstern tabel er løst koblet af natur. Data vil være tilgængelige i HDFS. Tabellen vil blive oprettet på baggrund af HDFS-data.
  • Med andre ord kan vi sige, at det handler om at oprette et skema på data.
  • På tidspunktet for faldetping Tabellen fjerner den kun skemaet, dataene vil stadig være tilgængelige i HDFS som før.
  • Eksterne tabeller giver mulighed for at oprette flere skemaer for de data, der er gemt i HDFS i stedet for at slette dataene hver gang, når skemaet opdateres
  • Fra Hive 4.0.0, vil DROP også slette dataene, hvis tabelegenskaben external.table.purge indstilles til true.

Hvornår skal man vælge eksternt bord?

  • Hvis behandlingsdataene er tilgængelige i HDFS
  • Nyttigt, når filerne bruges uden for Hive

Eksempelkodestykke til ekstern tabel

  1. Opret ekstern tabel
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Hvis vi ikke angiver placeringen på tidspunktet for tabellens oprettelse, kan vi indlæse dataene manuelt.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Vis indholdet af tabellen
      Hive>select * from guruhive_external;
  4. Sådan sletter du den eksterne tabel
      Hive>DROP TABLE guruhive_external;

Fra følgende skærmbillede kan vi se outputtet. Bemærk, at drop-filen til sidst kun fjerner skemaet – filen under LOCATION-stien forbliver uændret.

Oprettelse, indlæsning, forespørgsel og slip af Hive-sessionping guruhive_external

I ovenstående kode gør vi følgende

  • Opret den eksterne tabel
  • Indlæs dataene i ekstern tabel
  • Vis indholdet af tabellen
  • Dropping ekstern tabel

Forskellen mellem interne vs. eksterne tabeller

Feature Intern Ekstern
Planlæg Data om skema Skema om data
Opbevaring placering /bruger/hive/lager HDFS-placering angivet af LOCATION
Data tilgængelighed Inden for det lokale filsystem Inden for HDFS
Effekt af DROP Sletter skema og data Sletter kun skema, medmindre external.table.purge er sand
TRUNCATE-understøttelse Understøttet Ikke understøttet
SYRE transaktioner Understøttet Ikke understøttet

Apache Hive-dokumentation Angiver reglen tydeligt: ​​Hive antager, at den ejer dataene for administrerede tabeller, og antager, at den ikke gør det for eksterne tabeller, og enhver forskel ovenfor følger af denne ene antagelse.

Kommandoreference til ALTER TABLE og DROP TABLE

Skærmbillederne ovenfor viser kun en omdøbning og en sletning. Disse er de udsagn, en behandler oftest bruger i en eksisterende tabel.

Statement Formål
ÆNDRE TABEL tabelnavn OMDØDVE TIL nyt_navn; Omdøber tabellen; for en administreret tabel flytter dette også dens HDFS-mappe
ÆNDR TABEL tabelnavn TILFØJ KOLONNER (kolonnenavn datatype); Tilføjer en eller flere kolonner til slutningen af ​​skemaet
ÆNDR TABEL tabelnavn SKIFT KOLONNE gammelt_navn nyt_navn datatype; Omdøber en kolonne eller ændrer dens type
ÆNDR TABEL tabelnavn ERSTAT KOLONNER (…); Erstatter hele kolonnelisten med en ny
ALTER TABLE tabelnavn SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Konverterer en administreret tabel til en ekstern tabel, og FALSE omvender den
SLET TABEL [HVIS DEN FINDER] tabelnavn [RYD]; Fjerner tabellen; PURGE springer papirkurvsmappen over, så dataene ikke kan gendannes
AFKORT [TABEL] tabelnavn; Fjerner alle rækker, men bevarer skemaet; kun administrerede tabeller

To sikkerhedsforanstaltninger er værd at indbygge i ethvert script. IF EXISTS forhindrer, at en drop fejler på en tabel, der allerede er fjernet, og DESCRIBE FORMATTED bekræfter, om målet er MANAGED_TABLE eller EXTERNAL_TABLE, før drop'en køres.

Ofte Stillede Spørgsmål

Kør DESCRIBE FORMATTED tabelnavn. Rækken Tabeltype rapporterer enten MANAGED_TABLE eller EXTERNAL_TABLE. Kontrol før en drop er den billigste måde at undgå at slette data, som andre job stadig læser.

Ja. ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') vender typen i metastoren, og FALSE vender den tilbage. Datafilerne forbliver, hvor de er, så genindlæsning er ikke nødvendig.

Normalt nej, kun metastore-posten slettes. Fra Hive 4.0.0 slettes dataene dog også af DROP for en ekstern tabel, der indeholder egenskaben external.table.purge, hvis den er sat til true, så tjek egenskaberne først.

En almindelig CREATE TABLE producerer nu som standard en administreret, transaktionel ORC-tabel i stedet for en simpel teksttabel. Tilføjelsen af ​​nøgleordet EXTERNAL er det, der bevarer den ældre, ikke-ACID-adfærd på en Hive 3-klynge.

TRUNCATE fjerner alle rækker, men beholder skemaet, og det virker kun på administrerede tabeller. DROP fjerner også skemaet. TRUNCATE er det sikrere valg, når tabeldefinitionen skal overleve en genindlæsning.

Nej. Hive bruger små bogstaver i metastoren, så GURU_SAMPLE og guru_sample refererer til den samme tabel. Strengværdier i dataene forbliver store og små bogstaverfølsomme, hvilket er grunden til, at en WHERE-sammenligning stadig kan overse rækker.

Ja. Maskinlæringsfunktioner i katalogværktøjer profilerer kolonnekardinalitet, null-rater og forespørgselsmønstre og foreslår derefter datatyper, filformater og partitionsnøgler. Behandl outputtet som en kladde, da modellen ikke kan se planlagte arbejdsbelastninger.

Copilot fuldfører CREATE-, ALTER- og DROP-sætninger fra en kort kommentar, og agentassistenter kan producere et helt migreringsscript. RevSe nøgleordet EXTERNAL og enhver PURGE-indstilling, fordi et forkert gæt der sletter reelle data.

Opsummer dette indlæg med: