Vrste podataka Hive: Kako stvoriti i ispustiti baze podataka u Hive
⚡ Pametni sažetak
Tipovi podataka Hivea definiraju što svaki stupac tablice može sadržavati, a naredbe CREATE DATABASE i DROP DATABASE postavljaju ili uklanjaju imenski prostor u kojem se te tablice nalaze unutar Hive metastorea.

Tipovi podataka vrlo su važni elementi u Hive upitnom jeziku i modeliranju podataka. Za definiranje tipova stupaca tablice moramo znati o tipovima podataka i njihovoj upotrebi.
U nastavku slijedi kratak pregled nekih tipova podataka prisutnih u Hiveu:
- Numerički tipovi
- Vrste nizova
- Vrste datuma/vremena
- Složeni tipovi
Tipovi podataka u Hiveu
Svaki Hive stupac deklariran je s jednim od dolje navedenih tipova. Primitivne obitelji dolaze prve, a slijede ih složeni tipovi koji sadrže više od jedne vrijednosti u jednom stupcu.
Numerički tipovi podataka košnice
Numerički stupci kreću se od jednog bajta do osam bajtova, pa odabir najmanjeg tipa koji odgovara vrijednostima smanjuje troškove pohrane i skeniranja.
| Tip | Dodjela memorije |
|---|---|
| TINYINT | 1-bajtni cijeli broj s predznakom (-128 do 127) |
| SMALI | 2-bajtni cijeli broj s predznakom (-32,768 do 32,767) |
| INT | 4-bajtni cijeli broj s predznakom (-2,147,483,648 do 2,147,483,647) |
| BIGINT | 8-bajtni cijeli broj s predznakom (-9,223,372,036,854,775,808 do 9,223,372,036,854,775,807) |
| PLUTATI | 4-bajtni broj s pomičnim zarezom jednostruke preciznosti |
| DVOSTRUKO | 8-bajtni broj s pomičnim zarezom dvostruke preciznosti |
| DECIMAL | Preciznost i skalu u ovom tipu možemo definirati kao DECIMAL(preciznost, skala). Kada se izostave, Hive koristi DECIMAL(10,0) |
Vrste podataka nizova košnica
Kolumne znakova dolaze u tri oblika, a razlika je u tome nameće li Hive deklariranu duljinu.
| Tip | Dužina |
|---|---|
| TENK | Fiksna duljina, do 255 znakova. Kraće vrijednosti su dopunjene razmacima. |
| VARCHAR | 1 do 65,535 znakova. Dulja vrijednost se tiho skraćuje. |
| STRING | Ovdje možemo definirati duljinu (bez ograničenja) |
Vrste podataka datum/vrijeme košnice
Vremenski stupci pohranjuju se bez ikakvog pomaka vremenske zone, što je vrijedno zapamtiti prije usporedbe vrijednosti koje su zapisali različiti klasteri.
| Tip | Upotreba |
|---|---|
| Timestamp | Podržava tradicionalno Unix vremenska oznaka s izbornom preciznošću od nanosekunde |
| Datum | U formatu je GGGG-MM-DD. Raspon podržanih vrijednosti za tip datuma je od 0000-01-01 do 9999-12-31, ovisno o podršci primitiva. Java tipičan datum |
Razni tipovi podataka za Hive
Dva daljnja primitiva nalaze se izvan numeričkih, string i datumskih porodica, ali se redovito pojavljuju u stvarnim shemama.
| Tip | Upotreba |
|---|---|
| BOOLEAN | Pohranjuje vrijednost true ili false |
| binarni | Pohranjuje niz bajtova, što sprječava ulazak sirovog sadržaja u stupac tipa STRING |
Složeni tipovi podataka košnice
Složeni tipovi ugnijezde vrijednosti unutar jednog stupca, što uklanja dodatno spajanje koje bi relacijski dizajn zahtijevao.
| Tip | Upotreba |
|---|---|
| nizovi | NIZ Negativne vrijednosti i nekonstantni izrazi nisu dopušteni |
| Karte | KARTA Negativne vrijednosti i nekonstantni izrazi nisu dopušteni |
| Strukture | STRUKTURA |
| Unija | VRSTA UNIJE |
Primjer složenih tipova podataka košnice
Gornja tablica prikazuje oblik deklaracije. Donja naredba stavlja tri složena tipa u jednu tablicu tako da se klauzule razdjelnika i sintaksa pristupa mogu vidjeti zajedno.
CREATE TABLE employees ( name STRING, skills ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, pin:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
Ovdje su potrebna tri odvojena razdjelnika: jedan između stupaca, drugi između elemenata ARRAY ili STRUCT i treći između MAP ključa i njegove vrijednosti. Nakon što tablica postoji, svaki složeni stupac se čita s vlastitim pristupnikom.
SELECT name, skills[0], deductions['tax'], address.city FROM employees;
Donja tablica sažima koji pristupnik pripada kojem tipu.
| Tip | Kako se vrijednost čita |
|---|---|
| Array | Indeks baziran na nuli, kao što su vještine[0] |
| MAP | Ključna pretraga u uglatim zagradama, kao što je odbitci['porez'] |
| STRUKTIRATI | Točkasta notacija u nazivu polja, kao što je adresa.grad |
| VRSTA UNIJE | Rijetko se koristi jer je podrška za upite ostala nepotpuna |
Složeni tipovi mogu biti ugniježđeni, pa tako ARRAY > je valjana deklaracija stupca. Nakon što je raspored stupaca određen, same tablice se grade s naredbama obuhvaćenim u Hive kreira, mijenja i briše tablicu.
Kako stvoriti i ispustiti baze podataka u Hive
Baza podataka u Hiveu je jednostavno imenski prostor koji grupira tablice, pa je to prvi objekt koji se stvara prije početka bilo kakvog rada s tablicama. Slijede koraci za stvaranje i brisanje baza podataka u Hiveu.
Korak 1) Izradite bazu podataka u Hiveu
Za stvaranje baze podataka u Hive ljusci, moramo koristiti naredbu kao što je prikazano u sintaksi ispod:
Sintaksa:
Create database <DatabaseName>
Primjer: Izradite bazu podataka „guru99“
Snimka zaslona u nastavku prikazuje naredbu create nakon koje slijedi naredba show koja navodi sve baze podataka u klasteru.
Iz gornje snimke zaslona vidimo da radimo dvije stvari:
- Stvaranje baze podataka “guru99” u Hive
- Prikaz postojećih baza podataka pomoću naredbe "show"
Na istom ekranu, baza podataka „guru99“ se prikazuje na kraju kada izvršimo naredbu show, što znači da je baza podataka „guru99“ uspješno kreirana.
Korak 2) Ispustite bazu podataka u Hive
Za padping Za bazu podataka u Hive ljusci, moramo koristiti naredbu "drop" kao što je prikazano u sintaksi ispod:
Sintaksa:
Drop database <DatabaseName>
Primjer: Izbacivanje baze podataka guru99
Na sljedećoj snimci zaslona naredba drop se izvršava prva, a naredba show koja slijedi više ne navodi bazu podataka.
Na gornjoj snimci zaslona radimo dvije stvari:
- Mi smo padping baza podataka 'guru99' iz Hivea
- Unakrsna provjera istog s naredbom "show"
Na istom ekranu, nakon provjere baza podataka naredbom show, baza podataka „guru99“ se ne pojavljuje unutar Hivea. Dakle, sada možemo potvrditi da je baza podataka „guru99“ odbačena.
Naredbe baze podataka Hive: USE, DESCRIBE, SHOW i ALTER DATABASE
Dvije gornje naredbe koriste svoj najkraći oblik. Dokumentirana sintaksa sadrži opcionalne klauzule koje određuju gdje se datoteke nalaze i što se događa kada je ime već zauzeto.
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
Ključne riječi DATABASE i SCHEMA su međusobno zamjenjive, pa CREATE SCHEMA i CREATE DATABASE rade potpuno istu stvar. Preostale naredbe zaokružuju svakodnevni rad s imenskim prostorom.
| naredba | Ono što se također |
|---|---|
| PRIKAŽI BAZE PODATAKA; | Navodi svaku bazu podataka registriranu u metastoreu |
| USE ime_baze; | Postavlja trenutnu bazu podataka tako da nazivi tablica ne trebaju prefiks |
| DESCRIBE DATABASE naziv_baze_podataka; | Prijavljuje komentar, lokaciju HDFS-a i vlasnika |
| OPIŠI PROŠIRENU BAZU PODATAKA naziv_baze_podataka; | Dodaje parove ključ-vrijednost DBPROPERTIES tom izlazu |
| ALTER DATABASE naziv_baze_podataka POSTAVI DBPROPERTIES (…); | Dodaje ili zamjenjuje svojstva metapodataka |
| ALTER DATABASE naziv_baze_podataka POSTAVI VLASNIKA KORISNIKA korisničko_ime; | Prenosi vlasništvo na drugog korisnika ili ulogu |
| ALTER DATABASE naziv_baze_postavi_lokaciju put_hdfs-a; | Mijenja putanju koju koriste tablice kreirane od tada nadalje |
Vrijedi zapamtiti dvije zadane postavke. Bez klauzule LOCATION datoteke se nalaze u direktoriju skladišta podataka, obično /user/hive/warehouse/database_name.db, a bez IF EXISTS, ispuštanje na nedostajuće ime izaziva grešku umjesto da se tiho prođe. Obje postavke se čuvaju u Hive metastore.
Konverzija tipova podataka Hive i uobičajene pogreške
Tipovi se ne koriste uvijek točno onako kako je deklarirano. Hive automatski proširuje vrijednost kada se ne mogu izgubiti nikakve informacije, a sve ostalo prepušta eksplicitnoj konverziji.
- Implicitno proširivanje slijedi lanac TINYINT preko SMALLINT preko INT do BIGINT do FLOAT do DOUBLE, a STRING koji sadrži znamenke se promovira u DOUBLE.
- Sužavanje se nikada ne događa samo od sebe, pa stoga DOUBLE dodijeljen INT stupcu zahtijeva pisanu konverziju.
- CAST izvršava tu pisanu konverziju i vraća NULL umjesto greške kada se vrijednost ne može pretvoriti.
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;
Donje pogreške objašnjavaju većinu iznenađenja s kojima se početnici susreću na svojoj prvoj shemi.
| Simptom | Uzrok i popravak |
|---|---|
| Brisanje ne uspijeva dok baza podataka još uvijek sadrži tablice | RESTRICT je zadana vrijednost. Dodajte CASCADE da biste uklonili tablice s njim. |
| Dugi niz stiže skraćen | VARCHAR tiho skraćuje nakon deklarirane duljine. Koristite STRING kada nije potrebno ograničenje. |
| Stupac se čita kao NULL nakon konverzije | CAST nije mogao analizirati vrijednost. Provjerite izvorne podatke prije proširenja tipa. |
| Vrijednost valuta gubi svoje paise ili cente | DECIMAL bez argumenata znači DECIMAL(10,0). Eksplicitno navedite skalu |
| Dva identična datuma se nikad ne podudaraju | Datum tipa STRING i stupac tipa DATE su različitih tipova. Prije usporedbe, odvojite jednu stranu. |
Nakon što se tipovi ponašaju, sljedeći korak je učitavanje i ispitivanje samih podataka, što je opisano u Hive upiti s opcijama Poredaj po, Grupiraj po i Cluster By.


