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á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.
- A guru_sample tábla létrehozása két oszlopnévvel, például „empid” és „empname”
- A guru99 adatbázisban található táblák megjelenítése
- guru_sample megjelenítése a táblázatok alatt
- A „guru_sample” tábla módosítása „guru_sampleNew”-re
- 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.
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.
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
- A belső tábla létrehozásához
Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING); Row format delimited Fields terminated by '\t';
- Töltse be az adatokat a belső táblába
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
- Jelenítse meg a táblázat tartalmát
Hive>select * from guruhive_internaltable;
- 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.
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
- 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';
- 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;
- Jelenítse meg a táblázat tartalmát
Hive>select * from guruhive_external;
- 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.
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.




