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.


