Hive Create Table: Belső, Alter és Drop példákkal

⚡ Okos összefoglaló

Létrehozás, módosítás és elvetésping Az Apache Hive táblái a megszokott SQL-stílusú DDL-t használják, de az eredmény attól függ, hogy a tábla belső, a Hive tulajdonában lévő, vagy külső, amely csupán fájlokat ír le.

  • 🧱 TÁBLÁZAT LÉTREHOZÁSA: Egy utasítás definiálja a Hive-tábla oszlopait, sorformátumát és opcionálisan a tárolási helyét.
  • 🏷️ ALTER TABLE: A RENAME (Átnevezés) parancs megváltoztatja a tábla nevét, az ADD COLUMNS (Oszlopok hozzáadása) vagy CHANGE (Oszlop módosítása) parancs pedig a sémát szerkeszti az adatok újratöltése nélkül.
  • 🗑️ LEHETŐ TÁBLÁZAT: Cseppping egy belső tábla törli a sémát és az adatokat is, míg a dropping egy külső tábla csak a metaadatokat távolítja el.
  • 🔒 A belső tulajdonjog: Egy belső vagy felügyelt tábla a raktár könyvtár alatt található, és a Hive szabályozza a teljes életciklusát.
  • 🔗 Külső hivatkozás: Egy külső tábla olyan fájlokra mutat, amelyeket más eszközök is olvasnak, így ezek a fájlok túlélik a mentést.
  • ???? Ellenőrizd a típust: A DESCRIBE FORMATTED jelentések MANAGED_TABLE vagy EXTERNAL_TABLE formátumúak, amivel elkerülhető a találgatás a művelet elvégzése előtt.

Hive tábla létrehozási, módosítási és eldobási parancsai példákkal

Táblázatműveletek, például létrehozás, módosítás és elvetésping A Hive táblái megfigyelhetők ebben az útmutatóban. Minden művelet először élő munkamenetként, majd újrafelhasználható utasításként jelenik meg.

Hogyan hozhatunk létre, módosíthatunk és törölhetünk egy táblát a Hive-ban

Az alábbi képernyőképen létrehozunk egy táblázatot oszlopokkal, és megváltoztatjuk a táblázat nevét.

  1. A guru_sample tábla létrehozása két oszlopnévvel, például „empid” és „empname”
  2. A guru99 adatbázisban található táblák megjelenítése
  3. guru_sample megjelenítése a táblázatok alatt
  4. A „guru_sample” tábla módosítása „guru_sampleNew”-re
  5. Ismét, amikor végrehajtod a „show” parancsot, az új guru_sampleNew nevet fogja megjeleníteni.

Az alábbi foglalkozás mind az öt lépést sorrendben végrehajtja a következő helyen: kaptár> prompt, és az átnevezés előtti és utáni két SHOW TABLES hívás láthatóvá teszi a hatást.

A Hive munkamenet létrehozza a guru_sample-t, és átnevezi azt guru_sample-re. Új

Cseppping guru_minta táblaÚj:

Egyetlen DROP TABLE utasítás eltávolítja az átnevezett táblát, és a Hive OK-val válaszol.

Kaptárhéj cseppping a guru_sampleNew tábla OK válasszal

Hive CREATE TABLE szintaxis és gyakori záradékok

A fenti példa a lehető legrövidebb formát használja. A dokumentált utasítás számos opcionális záradékot fogad el, és mindegyik meghatároz valamit, amit a példa alapértelmezetten hagy.

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, ...)];
Kikötés Mit szabályoz
KÜLSŐ Létrehoz egy külső táblát, így a DROP a helyükön hagyja az adatfájlokat.
IDEIGLENES Létrehoz egy munkamenet-hatókörű táblázatot, amely eltűnik a munkamenet végén.
HA NEM LÉTEZIK Elnyomja a hibát, ha már létezik ilyen nevű tábla.
PARTÍCIÓK SZERINT A táblát kulcsértékenként egy könyvtárra osztja
… n VÖDÖRBE CSOPORTOSÍTVA Sorokat hashel fix számú fájlba
SORFORMÁTUM / TÁROLT MÓD Beállítja az elválasztójelet vagy SerDe-t és a fájlformátumot, például TEXTFILE, ORC vagy Parquet
HELYSZÍN A táblázatot egy adott HDFS elérési útra irányítja a raktár alapértelmezettje helyett.
TBLPROPERTIES Csatolja a metaadat-kulcs-érték párokat, beleértve az external.table.purge fájlt is.

Kapcsolódó űrlap, CREATE TABLE új_tábla LIKE meglévő_tábla, sémát másol sorok másolása nélkül. A strukturális záradékok, mint például a PARTITIONED BY és a CLUSTERED BY, részletesen tárgyalva vannak a kézikönyvben. Kaptár válaszfalak és vödrök.

A táblázat típusai és használata

A táblázatok létrehozása pont olyan, mint a hagyományos relációs adatbázisokban. Az olyan funkciók, mint a szűrés és az illesztések, a táblázatokon is elvégezhetők.

A Hive kétféle táblaszerkezettel, belső és külső táblákkal foglalkozik, a sémák betöltésétől és kialakításától függően. KaptárA választás nem kozmetikai jellegű: eldönti, hogy ki birtokolja az adatfájlokat, és mi történik velük, amikor a tábla törlődik.

Belső táblák a Hive-ban

  • A belső tábla természeténél fogva szorosan összekapcsolt. Az ilyen típusú táblákban először létre kell hoznunk a táblát, és be kell töltenünk az adatokat.
  • Ezt nevezhetjük sémaadatoknak.
  • Cseppenkéntping Ebben a táblázatban mind az adatok, mind a séma eltávolításra kerül.
  • Ennek a táblázatnak a tárolt helye a /user/hive/warehouse címen lesz.
  • A belső táblákat felügyelt tábláknak is nevezik, és csak ezek támogatják a TRUNCATE, ARCHIVE, MERGE, CONCATENATE és ACID tranzakciókat.

Mikor válassz belső asztalt?

  • Ha a feldolgozási adatok elérhetők a helyi fájlrendszerben
  • Ha azt szeretnénk, hogy a Hive kezelje az adatok teljes életciklusát, beleértve a törlést is

Minta kódrészlet a belső táblázathoz

  1. A belső tábla létrehozásához
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Töltse be az adatokat a belső táblába
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Jelenítse meg a táblázat tartalmát
        Hive>select * from guruhive_internaltable;
  4. Ledobni a belső asztalt
        Hive>DROP TABLE guruhive_internaltable;

Ha eltávolította a guruhive_internaltable fájlt, akkor a metaadataival és adataival együtt a rendszer törli a Hive-ból. Hacsak nincs megadva a PURGE parancs, a fájlok a HDFS kukájába kerülnek, ahelyett, hogy azonnal eltávolítanák őket.

A következő képernyőképen megfigyelhetjük mind a négy utasítás kimenetét egyetlen munkamenetben, amely a sikeres eldobással zárul.

Hive munkamenet létrehozása, betöltése, lekérdezése és eldobásaping guruhive_belsőtábla

A fenti kódban és a képernyőképen a következőket tesszük:

  • Készítse el a belső táblázatot
  • Töltse be az adatokat a belső táblába
  • Jelenítse meg a táblázat tartalmát
  • Ledobni a belső asztalt

Külső táblák a Hive-ban

  • A külső tábla lazán csatolt jellegű. Az adatok HDFS formátumban lesznek elérhetők. A tábla HDFS adatokon fog létrejönni.
  • Más szóval, azt mondhatjuk, hogy sémát hoz létre az adatokon.
  • A leesés idejénping A tábla csak a sémát dobja ki, az adatok továbbra is elérhetők lesznek a HDFS-ben, mint korábban.
  • A külső táblák lehetőséget biztosítanak arra, hogy több sémát hozzanak létre a HDFS-ben tárolt adatokhoz ahelyett, hogy minden alkalommal törölnék az adatokat a séma frissítésekor.
  • A Hive 4.0.0-tól kezdve a table property external.table.purge értékének true értékre állítása azt eredményezi, hogy a DROP a törlést is elvégzi.

Mikor válassz külső asztalt?

  • Ha a feldolgozási adatok elérhetők HDFS-ben
  • Hasznos, ha a fájlokat a Hive-n kívül használják

Minta kódrészlet a külső táblázathoz

  1. Külső tábla létrehozása
    Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
    	 Row format delimited
    	 Fields terminated by '\t'
    	 LOCATION '/user/guru99hive/guruhive_external';
  2. Ha a tábla létrehozásakor nem adjuk meg a helyet, manuálisan is betölthetjük az adatokat.
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
  3. Jelenítse meg a táblázat tartalmát
      Hive>select * from guruhive_external;
  4. A külső tábla eldobásához
      Hive>DROP TABLE guruhive_external;

A következő képernyőképen látható a kimenet. Figyeljük meg, hogy a végén lévő drop csak a sémát távolítja el – a LOCATION elérési út alatti fájl érintetlen marad.

Hive munkamenet létrehozása, betöltése, lekérdezése és eldobásaping guruhive_external

A fenti kódban a következőket tesszük

  • Hozzon létre egy külső táblát
  • Töltse be az adatokat a külső táblába
  • Jelenítse meg a táblázat tartalmát
  • Cseppping külső asztal

A belső és külső táblák közötti különbség

Jellemző belső Külső
Séma Adatok a sémáról Séma az adatokon
Tárolási hely /user/hive/warehouse A HDFS helyét a LOCATION adta meg.
Az adatok rendelkezésre állása Helyi fájlrendszeren belül HDFS-en belül
A DROP hatása Törli a sémát és az adatokat Csak a sémát törli, kivéve, ha az external.table.purge értéke igaz.
TRUNCATE támogatás Támogatott Nem támogatott
ACID tranzakciók Támogatott Nem támogatott

Az Apache Hive dokumentáció A szabály világosan kimondja: a Hive feltételezi, hogy a felügyelt táblák adatait birtokolja, a külső táblák adatait pedig nem, és a fenti összes különbség ebből az egyetlen feltételezésből következik.

ALTER TABLE és DROP TABLE parancsreferencia

A fenti képernyőképek csak egy átnevezést és egy eldobást mutatnak. Ezek azok az utasítások, amelyekre a gyakorlók leggyakrabban nyúlnak egy meglévő táblázaton.

nyilatkozat Cél
ALTER TABLE table_name RENAME TO new_name; Átnevezi a táblát; felügyelt tábla esetén ez a HDFS könyvtárát is áthelyezi.
ALTER TABLE table_name ADD COLUMNS (oszlopnév adattípus); Egy vagy több oszlopot fűz a séma végéhez
ALTER TABLE tábla_neve CHANGE COLUMN régi_név új_név adattípus; Átnevezi az oszlopot vagy megváltoztatja a típusát
ALTER TABLE table_name OSZLOPOK CSERÉJE (…); A teljes oszloplistát egy újra cseréli
ALTER TABLE tábla_neve SET TBLPROPERTIES ('EXTERNAL'='TRUE'); Egy felügyelt táblát külső táblává alakít, és a FALSE érték megfordítja az eredményt.
DROP TABLE [HA LÉTEZIK] tábla_neve [KITÖRÖL]; Eltávolítja a táblázatot; a PURGE kihagyja a kukát, így az adatok nem állíthatók vissza.
TRUNCATE [TABLÁZAT] tábla_neve; Eltávolítja az összes sort, de megtartja a sémát; csak a felügyelt táblákat

Két biztonsági intézkedést érdemes beépíteni minden szkriptbe. Az IF EXISTS megakadályozza, hogy egy már eltávolított táblán hiba történjen, a DESCRIBE FORMATTED pedig megerősíti, hogy a cél a MANAGED_TABLE vagy a EXTERNAL_TABLE, mielőtt a drop lefutna.

GYIK

Futtassa a DESCRIBE FORMATTED table_name parancsot. A Table Type sor vagy MANAGED_TABLE, vagy EXTERNAL_TABLE értéket jelez. Az eldobás előtti ellenőrzés a legolcsóbb módja annak, hogy elkerüljük a más feladatok által még beolvasott adatok törlését.

Igen. Az ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') paraméterrel megfordítható a metaadattárban lévő típus, a FALSE paraméterrel pedig visszafordítható. Az adatfájlok a jelenlegi helyükön maradnak, így nincs szükség újratöltésre.

Normális esetben nem, csak a metaadattár bejegyzés törlődik. A Hive 4.0.0 verziójától azonban egy olyan külső tábla adatai, amely az external.table.purge tulajdonságot true értékre állítja, szintén törlődnek a DROP paranccsal, ezért először ellenőrizd a tulajdonságokat.

Egy egyszerű CREATE TABLE mostantól alapértelmezés szerint egy felügyelt, tranzakciós ORC táblát hoz létre egy egyszerű szöveges tábla helyett. Az EXTERNAL kulcsszó hozzáadása tartja meg a régebbi, nem ACID viselkedést egy Hive 3 fürtön.

A TRUNCATE minden sort eltávolít, de megőrzi a sémát, és csak felügyelt táblákon működik. A DROP szintén eltávolítja a sémát. A TRUNCATE a biztonságosabb választás, ha a tábladefiníciónak túl kell élnie az újratöltést.

Nem. A Hive kisbetűsre hajtja az azonosítókat a metaadattárban, így a GURU_SAMPLE és a guru_sample ugyanarra a táblára hivatkozik. Az adatokon belüli karakterlánc-értékek továbbra is megkülönböztetik a kis- és nagybetűket, ezért egy WHERE összehasonlítás továbbra is kihagyhat sorokat.

Igen. A gépi tanulási funkciók a katalóguseszközökben profil oszlopok kardinalitását, nullértékeket és lekérdezési mintákat határoznak meg, majd adattípusokat, fájlformátumokat és partíciós kulcsokat javasolnak. A kimenetet vázlatként kezeljük, mivel a modell nem látja a tervezett munkaterheléseket.

A Copilot egy rövid megjegyzésből hajtja végre a CREATE, ALTER és DROP utasításokat, az ügynöki asszisztensek pedig egy teljes migrációs szkriptet tudnak létrehozni. RevNézd meg az EXTERNAL kulcsszót és az esetleges PURGE opciót, mert egy rossz tipp ott valódi adatokat töröl.

Foglald össze ezt a bejegyzést a következőképpen: