Hive Stvaranje tablice: Interno, Izmjena i Brisanje s primjerima
โก Pametni saลพetak
Stvaranje, mijenjanje i uklanjanjeping Tablice u Apache Hiveu koriste poznati SQL-stil DDL-a, ali ishod ovisi o tome je li tablica interna, koju Hive posjeduje, ili eksterna, koja samo opisuje datoteke.

Operacije s tablicom kao ลกto su stvaranje, mijenjanje i brisanjeping Tablice u Hiveu mogu se vidjeti u ovom vodiฤu. Svaka operacija se prvo prikazuje kao aktivna sesija, a zatim kao naredba za viลกekratnu upotrebu.
Kako stvoriti, promijeniti i ukloniti tablicu u Hiveu
Na donjoj snimci zaslona stvaramo tablicu sa stupcima i mijenjamo naziv tablice.
- Izrada tablice guru_sample s dva naziva stupaca kao ลกto su โempidโ i โempnameโ
- Prikaz tablica prisutnih u bazi podataka guru99
- guru_sample se prikazuje ispod tablica
- Mijenjanje tablice โguru_sampleโ kao โguru_sampleNewโ
- Ponovno, kada izvrลกite naredbu "show", prikazat ฤe se novi naziv guru_sampleNew
Sesija u nastavku izvodi svih pet koraka redom na koลกnica> prompt, a dva poziva SHOW TABLES prije i poslije preimenovanja ฤine efekt vidljivim.
Ispustitiping tablica guru_sampleNovo:
Jedna naredba DROP TABLE uklanja preimenovanu tablicu, a Hive odgovara s OK.
Sintaksa i uobiฤajene klauzule za Hive CREATE TABLE
Gornji primjer koristi najkraฤi moguฤi oblik. Dokumentirana izjava prihvaฤa nekoliko opcionalnih klauzula, a svaka od njih odluฤuje o neฤemu ลกto primjer ostavlja po zadanim postavkama.
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, ...)];
| Klauzula | ล to kontrolira |
|---|---|
| VANJSKI | Stvara vanjsku tablicu, tako da DROP ostavlja podatkovne datoteke na mjestu |
| PRIVREMENA | Stvara tablicu na razini sesije koja nestaje kada se sesija zavrลกi |
| AKO NE POSTOJI | Potiskuje greลกku kada tablica s tim imenom veฤ postoji |
| PODIJELJENO PO | Dijeli tablicu u jedan direktorij po kljuฤnoj vrijednosti |
| GRUPIRANO OD ... U n KANTICA | Haลกira retke u fiksni broj datoteka |
| FORMAT REDA / POHRANJENO KAO | Postavlja razdjelnik ili SerDe i format datoteke, kao ลกto su TEXTFILE, ORC ili Parquet |
| LOKACIJA | Usmjerava tablicu na odreฤenu HDFS putanju umjesto na zadanu putanju skladiลกta |
| TBLPROPERTIES | Prilaลพe parove kljuฤ-vrijednost metapodataka, ukljuฤujuฤi external.table.purge |
Povezani obrazac, STVORI TABLICU nova_tablica KAO postojeฤa_tablica, kopira shemu bez kopiranja redaka. Strukturne klauzule poput PARTITIONED BY i CLUSTERED BY detaljno su obraฤene u vodiฤu za Pregrade i kante za koลกnice.
Vrste tablica i njihova upotreba
ล to se tiฤe tablica, to je baลก kao i naฤin na koji stvaramo u tradicionalnim relacijskim bazama podataka. Funkcionalnosti poput filtriranja i spajanja mogu se izvoditi na tablicama.
Hive se bavi s dvije vrste struktura tablica, internim i eksternim tablicama, ovisno o uฤitavanju i dizajnu sheme u KoลกnicaIzbor nije kozmetiฤki: on odluฤuje tko je vlasnik podatkovnih datoteka i ลกto se s njima dogaฤa kada se tablica ukloni.
Interne tablice u Hiveu
- Interna tablica je po prirodi ฤvrsto povezana. U ovoj vrsti tablice prvo moramo stvoriti tablicu i uฤitati podatke.
- Ovo moลพemo nazvati podacima na shemi.
- Kap po kapping iz ove tablice bit ฤe uklonjeni i podaci i shema.
- Pohranjena lokacija ove tablice bit ฤe na /user/hive/warehouse.
- Interne tablice nazivaju se i upravljanim tablicama i samo one podrลพavaju transakcije TRUNCATE, ARCHIVE, MERGE, CONCATENATE i ACID.
Kada odabrati interni stol?
- Ako su podaci za obradu dostupni u lokalnom datoteฤnom sustavu
- Ako ลพelimo da Hive upravlja cijelim ลพivotnim ciklusom podataka ukljuฤujuฤi brisanje
Primjer isjeฤka koda za internu tablicu
- Za izradu interne tablice
Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING); Row format delimited Fields terminated by '\t';
- Uฤitajte podatke u internu tablicu
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
- Prikaลพite sadrลพaj tablice
Hive>select * from guruhive_internaltable;
- Za ispuลกtanje interne tablice
Hive>DROP TABLE guruhive_internaltable;
Ako ste izbrisali guruhive_internaltable, ukljuฤujuฤi njezine metapodatke i podatke, bit ฤe izbrisani iz Hivea. Osim ako nije naveden PURGE, datoteke se premjeลกtaju u mapu za smeฤe HDFS-a, a ne uklanjaju se odmah.
Na sljedeฤem snimku zaslona moลพemo vidjeti izlaz sve ฤetiri naredbe u jednoj sesiji, koja zavrลกava uspjeลกnim uklanjanjem.
U gornjem kodu i na snimci zaslona radimo sljedeฤe stvari,
- Napravite internu tablicu
- Uฤitajte podatke u internu tablicu
- Prikaลพite sadrลพaj tablice
- Za ispuลกtanje interne tablice
Vanjske tablice u Hiveu
- Vanjska tablica je labavo povezana po prirodi. Podaci ฤe biti dostupni u HDFS-u. Tablica ฤe biti kreirana na HDFS podacima.
- Drugim rijeฤima, moลพemo reฤi da stvara shemu na podacima.
- U trenutku padaping Iz tablice se uklanja samo shemu, podaci ฤe i dalje biti dostupni u HDFS-u kao i prije.
- Vanjske tablice pruลพaju opciju za stvaranje viลกe shema za podatke pohranjene u HDFS-u umjesto brisanja podataka svaki put kad se shema aลพurira
- Od Hivea 4.0.0, postavljanje svojstva tablice external.table.purge na true uzrokuje da DROP takoฤer briลกe podatke.
Kada odabrati vanjski stol?
- Ako su podaci obrade dostupni u HDFS-u
- Korisno kada se datoteke koriste izvan Hivea
Primjer isjeฤka koda za vanjsku tablicu
- Izradi vanjsku tablicu
Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING) Row format delimited Fields terminated by '\t' LOCATION '/user/guru99hive/guruhive_external';
- Ako ne odreฤujemo lokaciju u trenutku stvaranja tablice, podatke moลพemo uฤitati ruฤno.
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
- Prikaลพite sadrลพaj tablice
Hive>select * from guruhive_external;
- Za uklanjanje vanjske tablice
Hive>DROP TABLE guruhive_external;
Na sljedeฤoj snimci zaslona moลพemo vidjeti izlaz. Imajte na umu da ispuลกtanje na kraju uklanja samo shemu - datoteka pod putanjom LOCATION ostaje netaknuta.
U gornjem kodu radimo sljedeฤe stvari
- Napravite vanjsku tablicu
- Uฤitajte podatke u vanjsku tablicu
- Prikaลพite sadrลพaj tablice
- Ispustitiping vanjska tablica
Razlika izmeฤu internih i eksternih tablica
| svojstvo | interni | Vanjski |
|---|---|---|
| Shema | Podaci o shemi | Shema podataka |
| Mjesto pohrane | /korisnik/koลกnica/skladiลกte | Lokacija HDFS-a koju daje LOCATION |
| Dostupnost podataka | Unutar lokalnog datoteฤnog sustava | Unutar HDFS-a |
| Uฤinak DROP-a | Briลกe shemu i podatke | Briลกe samo shemu, osim ako je external.table.purge postavljen na true |
| Podrลกka za SKRATI | Podrลพano | Nije podrลพano |
| ACID transakcije | Podrลพano | Nije podrลพano |
The Dokumentacija Apache Hivea Pravilo je jasno navedeno: Hive pretpostavlja da posjeduje podatke za upravljane tablice, a ne za vanjske, te svaka gore navedena razlika proizlazi iz te jedne pretpostavke.
Referenca naredbi ALTER TABLE i DROP TABLE
Gornje snimke zaslona prikazuju samo preimenovanje i ispuลกtanje. To su izjave koje praktiฤar najฤeลกฤe koristi na postojeฤoj tablici.
| Izjava | Svrha |
|---|---|
| PROMIJENI TABLICU naziv_tablice PREIMENUJ U novo_naziv; | Preimenuje tablicu; za upravljanu tablicu ovo takoฤer premjeลกta njen HDFS direktorij |
| ALTER TABLE naziv_tablice DODAJ STUPCE (naziv_stupca tip_podataka); | Dodaje jedan ili viลกe stupaca na kraj sheme |
| PROMIJENI TABLICU naziv_tablice PROMIJENI STUPAC stari_naziv novi_naziv tip_podataka; | Preimenuje stupac ili promijeni njegov tip |
| PROMIJENI TABLICU naziv_tablice ZAMIJENI STUPCE (โฆ); | Zamjenjuje cijeli popis stupaca novim |
| ALTER TABLE naziv_tablice SET TBLPROPERTIES ('EXTERN'='TRUE'); | Pretvara upravljanu tablicu u vanjsku, a FALSE je obrฤe |
| ISPUSTI TABLICU [AKO POSTOJI] naziv_tablice [ฤISTI]; | Uklanja tablicu; PURGE preskaฤe mapu za smeฤe tako da se podaci ne mogu oporaviti |
| TRUNCATE [TABLICU] naziv_tablice; | Uklanja sve retke, ali zadrลพava shemu; samo upravljane tablice |
Dvije zaลกtitne mjere vrijedi ugraditi u svaki skript. IF EXISTS sprjeฤava neuspjeh drop-anja na tablici koja je veฤ uklonjena, a DESCRIBE FORMATTED potvrฤuje je li cilj MANAGED_TABLE ili EXTERNAL_TABLE prije nego ลกto se drop pokrene.




