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.

  • ๐Ÿงฑ STVARANJE TABLICE: Jedna naredba definira stupce, format retka i, opcionalno, lokaciju pohrane Hive tablice.
  • ๐Ÿท๏ธ PROMIJENI TABLICU: RENAME mijenja naziv tablice, a ADD COLUMNS ili CHANGE COLUMN ureฤ‘uje shemu bez ponovnog uฤitavanja podataka.
  • ๐Ÿ—‘๏ธ ISPUล TANJE TABLICE: Ispustitiping interna tablica briลกe i shemu i podatke, dok dropping vanjska tablica uklanja samo metapodatke.
  • ๐Ÿ”’ Interno je u vlasniลกtvu: Interna ili upravljana tablica nalazi se u direktoriju skladiลกta, a Hive kontrolira njezin cijeli ลพivotni ciklus.
  • ๐Ÿ”— Vanjski se referencira: Vanjska tablica pokazuje na datoteke koje ฤitaju i drugi alati, tako da te datoteke preลพive brisanje.
  • ๐Ÿ”Ž Provjerite vrstu: DESCRIBE FORMATTED izvjeลกtava o MANAGED_TABLE ili EXTERN_TABLE, ลกto uklanja svako nagaฤ‘anje prije ispuลกtanja.

Hive naredbe za stvaranje, promjenu i brisanje tablica s primjerima

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.

  1. Izrada tablice guru_sample s dva naziva stupaca kao ลกto su โ€žempidโ€œ i โ€žempnameโ€œ
  2. Prikaz tablica prisutnih u bazi podataka guru99
  3. guru_sample se prikazuje ispod tablica
  4. Mijenjanje tablice โ€žguru_sampleโ€œ kao โ€žguru_sampleNewโ€œ
  5. 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.

Sesija hivea stvara guru_sample i preimenuje ga u guru_sampleNew

Ispustitiping tablica guru_sampleNovo:

Jedna naredba DROP TABLE uklanja preimenovanu tablicu, a Hive odgovara s OK.

Pad ljuske koลกniceping tablica guru_sampleNew s odgovorom 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

  1. Za izradu interne tablice
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Uฤitajte podatke u internu tablicu
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Prikaลพite sadrลพaj tablice
        Hive>select * from guruhive_internaltable;
  4. 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.

Stvaranje, uฤitavanje, upiti i ispuลกtanje sesije hive-aping guruhive_internaltable

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

  1. 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';
  2. 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;
  3. Prikaลพite sadrลพaj tablice
      Hive>select * from guruhive_external;
  4. 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.

Stvaranje, uฤitavanje, upiti i ispuลกtanje sesije hive-aping guruhive_external

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.

Pitanja i odgovori

Pokrenite DESCRIBE FORMATTED table_name. Redak Vrsta tablice prikazuje ili MANAGED_TABLE ili EXTERNAL_TABLE. Provjera prije ispuลกtanja je najjeftiniji naฤin da se izbjegne brisanje podataka koje drugi poslovi joลก uvijek ฤitaju.

Da. ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') okreฤ‡e tip u metastoreu, a FALSE ga okreฤ‡e natrag. Datoteke s podacima ostaju tamo gdje jesu, tako da nije potrebno ponovno uฤitavanje.

Obiฤno ne, ide samo unos u metastore. Meฤ‘utim, od Hivea 4.0.0, vanjska tablica koja ima svojstvo external.table.purge postavljeno na true takoฤ‘er ima podatke izbrisane DROP-om, stoga prvo provjerite svojstva.

Obiฤna naredba CREATE TABLE sada prema zadanim postavkama stvara upravljanu, transakcijsku ORC tablicu umjesto jednostavne tekstualne tablice. Dodavanje kljuฤne rijeฤi EXTERNAL zadrลพava starije ponaลกanje koje nije ACID na klasteru Hive 3.

TRUNCATE uklanja svaki redak, ali zadrลพava shemu i radi samo na upravljanim tablicama. DROP takoฤ‘er uklanja shemu. TRUNCATE je sigurniji izbor kada definicija tablice treba preลพivjeti ponovno uฤitavanje.

Ne. Hive u metastoreu savija identifikatore u mala slova, pa se GURU_SAMPLE i guru_sample odnose na istu tablicu. Vrijednosti nizova unutar podataka ostaju osjetljive na velika i mala slova, zbog ฤega WHERE usporedba i dalje moลพe propustiti retke.

Da. Znaฤajke strojnog uฤenja u alatima za katalog profiliraju kardinalnost stupaca, null stope i uzorke upita, a zatim predlaลพu tipove podataka, formate datoteka i kljuฤeve particija. Izlaz tretirajte kao nacrt jer model ne moลพe vidjeti planirana optereฤ‡enja.

Copilot dovrลกava naredbe CREATE, ALTER i DROP iz kratkog komentara, a agentski asistenti mogu izraditi cijeli skript za migraciju. RevPogledajte kljuฤnu rijeฤ EXTERNAL i bilo koju opciju PURGE, jer pogreลกna pretpostavka briลกe stvarne podatke.

Saลพmite ovu objavu uz: