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.

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.
- Oppretter tabellen guru_sample med to kolonnenavn som ยซempidยป og ยซempnameยป
- Viser tabeller som finnes i guru99-databasen
- guru_sample vises under tabeller
- Endre tabellen ยซguru_sampleยป til ยซguru_sampleNewยป
- 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.
Dropping tabell guru_sampleNy:
รn enkelt DROP TABLE-setning fjerner den omdรธpte tabellen, og Hive svarer med OK.
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
- For รฅ opprette den interne tabellen
Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING); Row format delimited Fields terminated by '\t';
- Last inn dataene i den interne tabellen
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
- Vis innholdet i tabellen
Hive>select * from guruhive_internaltable;
- 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.
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
- 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';
- 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;
- Vis innholdet i tabellen
Hive>select * from guruhive_external;
- 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.
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.




