Hiven luontitaulukko: sisäinen, muokkaaminen ja poistaminen esimerkein

⚡ Älykäs yhteenveto

Luominen, muuttaminen ja poistaminenping Apache Hiven taulukot käyttävät tuttua SQL-tyylistä DDL:ää, mutta lopputulos riippuu siitä, onko taulukko sisäinen, jonka Hive omistaa, vai ulkoinen, joka vain kuvaa tiedostoja.

  • 🧱 LUO TAULUKKO: Yksi lauseke määrittää Hive-taulukon sarakkeet, rivimuodon ja valinnaisesti tallennussijainnin.
  • 🏷️ MUUTOKSET: RENAME-komennolla voi muuttaa taulukon nimeä, ja ADD COLUMNS- tai CHANGE COLUMN-komennolla voi muokata kaavaa lataamatta tietoja uudelleen.
  • 🗑️ PUDOTUSPÖYTÄ: Pudotaping sisäinen taulukko poistaa sekä skeeman että datan, kun taas dropping ulkoinen taulukko poistaa vain metatiedot.
  • 🔒 Sisäinen omistaa: Sisäinen tai hallittu taulukko sijaitsee varastohakemistossa ja Hive hallitsee sen koko elinkaarta.
  • 🔗 Ulkoiseen viitataan: Ulkoinen taulukko osoittaa tiedostoihin, joita muut työkalut myös lukevat, joten kyseiset tiedostot säilyvät pudotuksen jälkeen.
  • 🔎 Vahvista tyyppi: DESCRIBE FORMATTED -raportit MANAGED_TABLE- tai EXTERNAL_TABLE-muodossa, mikä poistaa kaikki arvailut ennen pudotusta.

Hiven taulukkokomennot esimerkkien kera

Taulukon toiminnot, kuten luominen, muuttaminen ja poistaminenping Tässä läpikäynnissä voidaan tarkastella Hive-taulukoita. Jokainen operaatio näytetään ensin reaaliaikaisena istuntona ja sitten uudelleenkäytettävänä lausekkeena.

Taulukon luominen, muokkaaminen ja poistaminen Hivessä

Alla olevassa kuvakaappauksessa luomme taulukon sarakkeineen ja muutamme taulukon nimeä.

  1. Taulukon guru_sample luominen kahdella sarakenimellä, kuten ”empid” ja ”empname”
  2. Näytetään guru99-tietokannassa olevat taulukot
  3. guru_sample näytetään taulukoiden alla
  4. Muutetaan taulukkoa “guru_sample” muotoon “guru_sampleNew”
  5. Jälleen kerran, kun suoritat “show”-komennon, se näyttää uuden nimen guru_sampleNew

Alla olevassa istunnossa kaikki viisi vaihetta suoritetaan järjestyksessä pesä> kehote, ja kaksi SHOW TABLES -kutsua ennen nimeämistä ja sen jälkeen tekevät vaikutuksesta näkyvän.

Hive-istunto luo guru_samplea ja nimeää sen uudelleen guru_sampleksiNew

Pudotaping taulukko guru_esimerkkiUusi:

Yksi DROP TABLE -komento poistaa uudelleennimetyn taulukon, ja Hive vastaa OK:lla.

Pesänkuoren pudotusping guru_sampleNew-taulukko, jossa on OK-vastaus

Hive CREATE TABLE -syntaksi ja yleiset lausekkeet

Yllä olevassa esimerkissä käytetään lyhintä mahdollista muotoa. Dokumentoitu lauseke hyväksyy useita valinnaisia ​​lausekkeita, ja jokainen niistä päättää jotain, minkä esimerkki jättää oletusarvoiseksi.

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, ...)];
lauseke Mitä se hallitsee
ULKOINEN Luo ulkoisen taulukon, joten DROP jättää datatiedostot paikoilleen
VÄLIAIKAINEN Luo istuntokohtaisen taulukon, joka katoaa istunnon päättyessä.
JOS EI OLE OLEMASSA Estää virheen, kun samanniminen taulukko on jo olemassa
OSIOINTI Jakaa taulukon yhteen hakemistoon avainarvoa kohden
RYHMITTÄÄ … n ÄMPÄRIIN Tiivistää rivit kiinteäksi määräksi tiedostoja
RIVIMUOTO / TALLENNETTU MUISTONA Asettaa erottimen eli SerDe-merkin ja tiedostomuodon, kuten TEXTFILE, ORC tai Parquet
SIJAINTI Osoittaa taulukon tiettyyn HDFS-polkuun oletusarvoisen varastopolun sijaan
TBL-KIINTEISÖT Liittää metadatan avain-arvo-parit, mukaan lukien external.table.purge

Liittyvä lomake, LUO TAULU uusi_taulukko KUTEN olemassa oleva_taulukko, kopioi skeeman kopioimatta rivejä. Rakennelausekkeita, kuten PARTITIONED BY ja CLUSTERED BY, käsitellään yksityiskohtaisesti oppaassa Pesän väliseinät ja ämpärit.

Taulukkotyypit ja niiden käyttö

Taulukoiden osalta se on aivan samanlainen tapa luoda kuin perinteisissä relaatiotietokannoissa. Toiminnot, kuten suodatus ja liitokset, voidaan suorittaa taulukoille.

Hive käsittelee kahdenlaisia ​​taulukkorakenteita, sisäisiä ja ulkoisia taulukoita, riippuen skeeman lataustavasta ja suunnittelusta HiveValinta ei ole kosmeettinen: se määrittää kuka omistaa datatiedostot ja mitä niille tapahtuu, kun taulukko poistetaan.

Sisäiset taulukot Hivessä

  • Sisäinen taulukko on luonteeltaan tiiviisti kytketty. Tällaisessa taulukossa meidän on ensin luotava taulukko ja ladattava tiedot.
  • Voimme kutsua tätä skeeman dataksi.
  • Pisaroittainping Tästä taulukosta poistetaan sekä tiedot että kaava.
  • Tämän taulukon tallennuspaikka on /user/hive/warehouse.
  • Sisäisiä taulukoita kutsutaan myös hallituiksi taulukoiksi, ja vain ne tukevat TRUNCATE-, ARCHIVE-, MERGE-, CONCATENATE- ja ACID-tapahtumia.

Milloin valita sisäinen pöytä?

  • Jos käsittelytiedot ovat saatavilla paikallisessa tiedostojärjestelmässä
  • Jos haluamme Hiven hallitsevan tietojen koko elinkaarta, mukaan lukien poistaminen

Esimerkkikoodinpätkä sisäiselle taulukolle

  1. Sisäisen taulukon luominen
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Lataa tiedot sisäiseen taulukkoon
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Näytä taulukon sisältö
        Hive>select * from guruhive_internaltable;
  4. Pudottaaksesi sisäisen pöydän
        Hive>DROP TABLE guruhive_internaltable;

Jos poistit guruhive_internaltable-tiedoston, se poistetaan Hivestä metatietoineen ja dataineen. Ellei PURGE-metodia ole määritetty, tiedostot siirretään HDFS:n roskakoriin sen sijaan, että ne poistettaisiin välittömästi.

Seuraavasta kuvakaappauksesta voimme havaita kaikkien neljän lausekkeen tulosteen yhden istunnon aikana, joka päättyy onnistuneeseen pudotukseen.

Hive-istunnon luominen, lataaminen, kysely ja pudottaminenping guruhive_sisäinen taulukko

Yllä olevassa koodissa ja kuvakaappauksessa teemme seuraavat asiat,

  • Luo sisäinen taulukko
  • Lataa tiedot sisäiseen taulukkoon
  • Näytä taulukon sisältö
  • Pudottaaksesi sisäisen pöydän

Ulkoiset taulukot Hivessä

  • Ulkoinen taulukko on luonteeltaan löyhästi kytketty. Data on saatavilla HDFS-muodossa. Taulukko luodaan HDFS-datan pohjalta.
  • Toisin sanoen voimme sanoa, että se luo datalle skeeman.
  • Pudotuksen aikaanping taulukosta pudotetaan vain skeema, tiedot ovat edelleen saatavilla HDFS:ssä kuten ennenkin.
  • Ulkoiset taulukot tarjoavat mahdollisuuden luoda useita skeemoja HDFS:ään tallennetuille tiedoille sen sijaan, että tiedot poistettaisiin aina, kun skeema päivitetään.
  • Hive 4.0.0:ssa taulukon ominaisuuden external.table.purge asettaminen arvoon true saa DROP:n poistamaan myös tiedot.

Milloin valita ulkoinen pöytä?

  • Jos käsittelytiedot ovat saatavilla HDFS:ssä
  • Hyödyllinen, kun tiedostoja käytetään Hiven ulkopuolella

Esimerkkikoodinpätkä ulkoiselle taulukolle

  1. Luo ulkoinen taulukko
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Jos emme määritä sijaintia taulukon luomisen yhteydessä, voimme ladata tiedot manuaalisesti
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Näytä taulukon sisältö
      Hive>select * from guruhive_external;
  4. Ulkoisen taulukon pudottaminen
      Hive>DROP TABLE guruhive_external;

Seuraavasta kuvakaappauksesta näemme tuloksen. Huomaa, että lopussa oleva pudotus poistaa vain skeeman – LOCATION-polun alla oleva tiedosto pysyy koskemattomana.

Hive-istunnon luominen, lataaminen, kysely ja pudottaminenping guruhive_external

Yllä olevassa koodissa teemme seuraavat asiat

  • Luo ulkoinen taulukko
  • Lataa tiedot ulkoiseen taulukkoon
  • Näytä taulukon sisältö
  • Pudotaping ulkoinen pöytä

Sisäisten ja ulkoisten taulukoiden välinen ero

Ominaisuus Sisäinen Ulkoinen
Malli Data Schema Schema on Data
Varastointisijainti /käyttäjä/pesä/varasto HDFS-sijainnin on antanut LOCATION
Tietojen saatavuus Paikallisessa tiedostojärjestelmässä HDFS:n sisällä
DROPin vaikutus Poistaa skeeman ja tiedot Poistaa vain skeeman, ellei external.table.purge ole true
TRUNCATE-tuki Tuetut Ei tuettu
ACID-tapahtumat Tuetut Ei tuettu

Apache Hiven dokumentaatio ilmaisee säännön selvästi: Hive olettaa omistavansa hallittujen taulukoiden tiedot ja olettaa, ettei se omista ulkoisten taulukoiden tietoja, ja jokainen yllä oleva ero seuraa tästä yhdestä oletuksesta.

ALTER TABLE- ja DROP TABLE -komentojen opas

Yllä olevissa kuvakaappauksissa näkyy vain uudelleennimeäminen ja pudottaminen. Näitä lauseita useimmiten käytetään olemassa olevalla taulukolla.

Lausunto Tarkoitus
ALTER TABLE table_name RENAME TO new_name; Nimeää taulukon uudelleen; hallitun taulukon tapauksessa tämä siirtää myös sen HDFS-hakemiston
ALTER TABLE taulukon_nimi ADD COLUMNS (sarakkeen_nimi tietotyyppi); Lisää yhden tai useamman sarakkeen skeeman loppuun
ALTER TABLE taulukon_nimi CHANGE COLUMN vanha_nimi uusi_nimi tietotyyppi; Nimeää sarakkeen uudelleen tai muuttaa sen tyyppiä
ALTER TABLE taulukon_nimi KORVAA SARAKKEET (…); Korvaa koko sarakeluettelon uudella
ALTER TABLE taulukon_nimi SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Muuntaa hallitun taulukon ulkoiseksi taulukoksi ja FALSE kääntää sen arvon.
PUDOTA TAULU [JOS OLEMASSA] taulukon_nimi [TYHJENNÄ]; Poistaa taulukon; PURGE ohittaa roskakorikansion, joten tietoja ei voida palauttaa
TRUNCATE [TAULUKKO] taulukon_nimi; Poistaa kaikki rivit, mutta säilyttää kaavan; vain hallitut taulukot

Kaksi suojatoimia kannattaa sisällyttää mihin tahansa skriptiin. IF EXISTS estää pudotuksen epäonnistumisen jo poistetussa taulukossa, ja DESCRIBE FORMATTED vahvistaa, onko kohde MANAGED_TABLE vai EXTERNAL_TABLE, ennen pudotuksen suorittamista.

UKK

Suorita DESCRIBE FORMATTED table_name. Taulukon tyyppi -rivi raportoi joko MANAGED_TABLE- tai EXTERNAL_TABLE-arvon. Tarkistaminen ennen pudotusta on halvin tapa välttää sellaisten tietojen poistamista, joita muut työt vielä lukevat.

Kyllä. ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') kääntää metastoren tyypin ja FALSE kääntää sen takaisin alkutilaan. Datatiedostot pysyvät paikoillaan, joten niitä ei tarvitse ladata uudelleen.

Normaalisti ei, vain metastore-merkintä poistetaan. Hive 4.0.0:sta alkaen kuitenkin ulkoisen taulukon, jonka ominaisuus external.table.purge on asetettu arvoon true, tiedot poistetaan myös DROP-komennolla, joten tarkista ominaisuudet ensin.

Pelkkä CREATE TABLE tuottaa nyt oletusarvoisesti hallitun, transaktionaalisen ORC-taulukon yksinkertaisen tekstitaulukon sijaan. EXTERNAL-avainsanan lisääminen säilyttää vanhemman, ei-ACID-toiminnan Hive 3 -klusterissa.

TRUNCATE poistaa kaikki rivit, mutta säilyttää skeeman, ja se toimii vain hallituissa taulukoissa. DROP poistaa myös skeeman. TRUNCATE on turvallisempi vaihtoehto, kun taulukkomääritelmän halutaan säilyvän uudelleenlatauksen yhteydessä.

Ei. Hive taittaa tunnisteet pieniksi kirjaimiksi metastoressa, joten GURU_SAMPLE ja guru_sample viittaavat samaan taulukkoon. Datan sisällä olevat merkkijonoarvot ovat kirjainkokoriippuvaisia, minkä vuoksi WHERE-vertailu voi silti jättää rivejä huomaamatta.

Kyllä. Koneoppimisominaisuudet luettelotyökaluissa profiloivat sarakekardinaliteetin, null-prosentit ja kyselymallit ja ehdottavat sitten tietotyyppejä, tiedostomuotoja ja osioavaimia. Tulostetta käsitellään luonnoksena, koska malli ei voi nähdä suunniteltuja työkuormia.

Copilot suorittaa CREATE-, ALTER- ja DROP-lausekkeet lyhyen kommentin perusteella, ja agenttiavustajat voivat luoda kokonaisen siirtoskriptin. RevKatso EXTERNAL-avainsanaa ja mahdollista PURGE-vaihtoehtoa, koska väärä arvaus poistaa oikeaa dataa.

Tiivistä tämä viesti seuraavasti: