Hive Create Table: Intern, Endre og Slett med Eksempler

โšก Smart oppsummering

Opprette, endre og sletteping Tabeller i Apache Hive bruker kjent DDL i SQL-stil, men resultatet avhenger av om tabellen er intern, som Hive eier, eller ekstern, som bare beskriver filer.

  • ๐Ÿงฑ LAG TABELL: ร‰n setning definerer kolonnene, radformatet og eventuelt lagringsplasseringen til en Hive-tabell.
  • ๐Ÿท๏ธ ENDRINGSTABELL: RENAME endrer tabellnavnet, og LEGG TIL KOLONNER eller ENDRE KOLONNE redigerer skjemaet uten รฅ laste inn data pรฅ nytt.
  • ๐Ÿ—‘๏ธ SLIPP TABELL: Dropping En intern tabell sletter bรฅde skjema og data, mens dropping En ekstern tabell fjerner bare metadataene.
  • ๐Ÿ”’ Internt eies: En intern eller administrert tabell ligger under lagerkatalogen, og Hive kontrollerer hele livssyklusen.
  • ๐Ÿ”— Ekstern refereres til: En ekstern tabell peker pรฅ filer som andre verktรธy ogsรฅ leser, slik at disse filene overlever droppprosessen.
  • ๐Ÿ”Ž Bekreft typen: BESKRIV FORMATTED-rapporter MANAGED_TABLE eller EXTERNAL_TABLE, som fjerner all gjetting fรธr en dropp.

Hive-kommandoer for รฅ opprette, endre og slette tabeller med eksempler

Tabelloperasjoner som oppretting, endring og slettingping Tabeller i Hive kan observeres i denne gjennomgangen. Hver operasjon vises fรธrst som en live-รธkt, deretter som en gjenbrukbar setning.

Slik oppretter, endrer og sletter du en tabell i Hive

I skjermbildet nedenfor lager vi en tabell med kolonner og endrer tabellnavnet.

  1. Oppretter tabellen guru_sample med to kolonnenavn som ยซempidยป og ยซempnameยป
  2. Viser tabeller som finnes i guru99-databasen
  3. guru_sample vises under tabeller
  4. Endre tabellen ยซguru_sampleยป til ยซguru_sampleNewยป
  5. Igjen, nรฅr du kjรธrer kommandoen ยซshowยป, vil den vise det nye navnet guru_sampleNew

ร˜kten nedenfor kjรธrer alle fem trinnene i rekkefรธlge pรฅ bikube> prompten, og de to SHOW TABLES-kallene fรธr og etter nytt navn gjรธr effekten synlig.

Hive-รธkt oppretter guru_sample og gir den nytt navn til guru_sampleNew

Dropping tabell guru_sampleNy:

ร‰n enkelt DROP TABLE-setning fjerner den omdรธpte tabellen, og Hive svarer med OK.

Hive skalldrรฅpeping guru_sampleNy tabell med et OK-svar

Hive CREATE TABLE Syntaks og vanlige klausuler

Eksemplet ovenfor bruker kortest mulig form. Den dokumenterte setningen aksepterer flere valgfrie klausuler, og hver av dem bestemmer noe eksemplet lar stรฅ 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 Hva den kontrollerer
UTVENDIG Oppretter en ekstern tabell, slik at DROP lar datafilene vรฆre pรฅ plass
MIDLERTIDIG Oppretter en รธktomfattet tabell som forsvinner nรฅr รธkten avsluttes
HVIS IKKE FINNES Undertrykker feilen nรฅr en tabell med det navnet allerede finnes
DELT AV Deler tabellen inn i รฉn katalog per nรธkkelverdi
KLUSTERT ETTER โ€ฆ I n Bร˜TTER Hasher rader til et fast antall filer
RADFORMAT / LAGRET SOM Angir skilletegnet eller SerDe og filformatet, for eksempel TEKSTFIL, ORC eller Parquet
OPPMร˜TE Peker tabellen mot en bestemt HDFS-bane i stedet for standardlageret
TBL-EIENDOMMER Legger ved metadata-nรธkkelverdipar, inkludert external.table.purge

En beslektet form, OPPRETT TABELL ny_tabell SOM eksisterende_tabell, kopierer et skjema uten รฅ kopiere noen rader. Strukturklausuler som PARTITIONED BY og CLUSTERED BY er dekket i detalj i veiledningen til Bikubeskillevegger og bรธtter.

Tabelltyper og dens bruk

Nรฅr det gjelder tabeller, er det akkurat som mรฅten vi oppretter i tradisjonelle relasjonsdatabaser. Funksjonaliteter som filtrering og sammenfรธyninger kan utfรธres pรฅ tabellene.

Hive hรฅndterer to typer tabellstrukturer, interne og eksterne tabeller, avhengig av lasting og design av skjemaet i HiveValget er ikke kosmetisk: det avgjรธr hvem som eier datafilene og hva som skjer med dem nรฅr tabellen slettes.

Interne tabeller i Hive

  • En intern tabell er tett koblet. I denne typen tabell mรฅ vi fรธrst opprette tabellen og laste inn dataene.
  • Vi kan kalle dette data pรฅ skjema.
  • Ved slippping denne tabellen, vil bรฅde data og skjema bli fjernet.
  • Den lagrede plasseringen til denne tabellen vil vรฆre pรฅ /user/hive/warehouse.
  • Interne tabeller kalles ogsรฅ administrerte tabeller, og bare de stรธtter TRUNCATE-, ARCHIVE-, MERGE-, CONCATENATE- og ACID-transaksjoner.

Nรฅr skal jeg velge internt bord?

  • Hvis behandlingsdataene er tilgjengelige i det lokale filsystemet
  • Hvis vi vil at Hive skal administrere hele livssyklusen til data, inkludert sletting

Eksempelkodebit for intern tabell

  1. For รฅ opprette den interne tabellen
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Last inn dataene i den interne tabellen
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Vis innholdet i tabellen
        Hive>select * from guruhive_internaltable;
  4. For รฅ slippe den interne tabellen
        Hive>DROP TABLE guruhive_internaltable;

Hvis du slettet guruhive_internaltable, vil inkludert metadata og data bli slettet fra Hive. Med mindre PURGE er spesifisert, flyttes filene til HDFS-sรธppelmappen i stedet for รฅ bli fjernet umiddelbart.

Fra fรธlgende skjermbilde kan vi se resultatet av alle fire setningene i รฉn รธkt, som slutter med den vellykkede droppprosessen.

Oppretting, lasting, spรธrring og slipp av Hive-รธktping guruhive_internaltable

I koden ovenfor og fra skjermbildet gjรธr vi fรธlgende ting:

  • Lag den interne tabellen
  • Last inn dataene i den interne tabellen
  • Vis innholdet i tabellen
  • For รฅ slippe den interne tabellen

Eksterne tabeller i Hive

  • Ekstern tabell er lรธst koblet av natur. Data vil vรฆre tilgjengelige i HDFS. Tabellen skal opprettes pรฅ HDFS-data.
  • Med andre ord kan vi si at det lager skjemaer pรฅ data.
  • Pรฅ tidspunktet for falletping Tabellen fjerner den bare skjemaet, dataene vil fortsatt vรฆre tilgjengelige i HDFS som fรธr.
  • Eksterne tabeller gir en mulighet til รฅ lage flere skjemaer for dataene som er lagret i HDFS i stedet for รฅ slette dataene hver gang nรฅr skjemaet oppdateres
  • Fra Hive 4.0.0, vil det รฅ sette tabellegenskapen external.table.purge til true fรธre til at DROP ogsรฅ sletter dataene.

Nรฅr skal jeg velge eksternt bord?

  • Hvis behandlingsdataene er tilgjengelige i HDFS
  • Nyttig nรฅr filene brukes utenfor Hive

Eksempelkodebit for ekstern tabell

  1. Opprett ekstern tabell
    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 spesifiserer plasseringen nรฅr tabellen opprettes, kan vi laste inn dataene manuelt.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Vis innholdet i tabellen
      Hive>select * from guruhive_external;
  4. Slik sletter du den eksterne tabellen
      Hive>DROP TABLE guruhive_external;

Fra fรธlgende skjermbilde kan vi se resultatet. Merk at droppfeltet pรฅ slutten bare fjerner skjemaet โ€“ filen under LOCATION-banen forblir urรธrt.

Oppretting, lasting, spรธrring og slipp av Hive-รธktping guruhive_external

I koden ovenfor gjรธr vi fรธlgende

  • Lag den eksterne tabellen
  • Last inn dataene i ekstern tabell
  • Vis innholdet i tabellen
  • Dropping ekstern tabell

Forskjellen mellom interne vs. eksterne tabeller

Trekk Intern Ekstern
Skjema Data om skjema Skjema pรฅ data
Lagringssted /bruker/hive/lager HDFS-posisjon oppgitt av LOCATION
Datatilgjengelighet Innenfor lokalt filsystem Innenfor HDFS
Effekt av DROP Sletter skjema og data Sletter bare skjema, med mindre external.table.purge er sann
AVKORTE stรธtte Stรธttes Stรธttes ikke
ACID-transaksjoner Stรธttes Stรธttes ikke

Ocuco Apache Hive-dokumentasjon sier regelen tydelig: Hive antar at den eier dataene for administrerte tabeller og antar at den ikke gjรธr det for eksterne, og enhver forskjell ovenfor fรธlger av den ene antagelsen.

Referanse for kommandoene ALTER TABLE og DROP TABLE

Skjermbildene ovenfor viser bare et navnebytte og en sletting. Dette er setningene en utรธver oftest bruker i en eksisterende tabell.

Uttalelse Formรฅl
ENDR TABELL tabellnavn ENDR NAVN TIL nytt_navn; Gir tabellen nytt navn; for en administrert tabell flytter dette ogsรฅ HDFS-katalogen
ENDRE TABELL tabellnavn LEGG TIL KOLONNER (kolonnenavn datatype); Legger til รฉn eller flere kolonner pรฅ slutten av skjemaet
ENDRE TABELL tabellnavn ENDRE KOLONNE gammelt_navn nytt_navn datatype; Gir nytt navn til en kolonne eller endrer typen
ENDRE TABELL tabellnavn ERSTATT KOLONNER (โ€ฆ); Erstatter hele kolonnelisten med en ny
ALTER TABLE tabellnavn SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Konverterer en administrert tabell til en ekstern tabell, og FALSE reverserer den
SLETT TABELL [HVIS DEN FINNES] tabellnavn [FJERN]; Fjerner tabellen; PURGE hopper over sรธppelmappen slik at dataene ikke kan gjenopprettes
AVKORTE [TABELL] tabellnavn; Fjerner alle rader, men beholder skjemaet; kun administrerte tabeller

To sikkerhetstiltak er verdt รฅ bygge inn i ethvert skript. IF EXISTS hindrer at en dropp feiler pรฅ en tabell som allerede er fjernet, og DESCRIBE FORMATTED bekrefter om mรฅlet er MANAGED_TABLE eller EXTERNAL_TABLE fรธr droppen kjรธres.

Spรธrsmรฅl og svar

Kjรธr DESCRIBE FORMATTED tabellnavn. Tabelltype-raden rapporterer enten MANAGED_TABLE eller EXTERNAL_TABLE. ร… sjekke fรธr en slipp er den billigste mรฅten รฅ unngรฅ รฅ slette data som andre jobber fortsatt leser.

Ja. ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') snur typen i metalageret, og FALSE snur den tilbake. Datafilene forblir der de er, sรฅ det er ikke nรธdvendig รฅ laste inn pรฅ nytt.

Normalt sett ikke, bare metastore-oppfรธringen gรฅr. Fra Hive 4.0.0 fรฅr imidlertid en ekstern tabell som har egenskapen external.table.purge satt til true, ogsรฅ dataene sine slettet av DROP, sรฅ sjekk egenskapene fรธrst.

En vanlig CREATE TABLE produserer nรฅ en administrert, transaksjonell ORC-tabell som standard i stedet for en enkel teksttabell. ร… legge til EXTERNAL-nรธkkelordet er det som beholder den eldre, ikke-ACID-oppfรธrselen pรฅ en Hive 3-klynge.

TRUNCATE fjerner alle rader, men beholder skjemaet, og det fungerer bare pรฅ administrerte tabeller. DROP fjerner ogsรฅ skjemaet. TRUNCATE er det tryggere valget nรฅr tabelldefinisjonen skal overleve en ny innlasting.

Nei. Hive bretter identifikatorer til smรฅ bokstaver i metastoren, slik at GURU_SAMPLE og guru_sample refererer til den samme tabellen. Strengverdier i dataene forblir store og smรฅ bokstaver, og det er derfor en WHERE-sammenligning fortsatt kan overse rader.

Ja. Maskinlรฆringsfunksjoner i katalogverktรธy profilerer kolonnekardinalitet, nullfrekvenser og spรธrremรธnstre, og foreslรฅr deretter datatyper, filformater og partisjonsnรธkler. Behandle utdataene som et utkast, fordi modellen ikke kan se planlagte arbeidsbelastninger.

Copilot fullfรธrer CREATE-, ALTER- og DROP-setninger fra en kort kommentar, og agentassistenter kan produsere et helt migreringsskript. RevSe nรธkkelordet EXTERNAL og et eventuelt PURGE-alternativ, fordi en feil gjetning der sletter reelle data.

Oppsummer dette innlegget med: