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.

  • ๐Ÿ”ข Numeriฤki tipovi: Funkcije od TINYINT do BIGINT pokrivaju cijele brojeve, dok DECIMAL(precision, scale) ฤuva toฤne vrijednosti koje FLOAT i DOUBLE ne mogu.
  • ๐Ÿ”ค Vrste nizova: STRING nema deklariranog ograniฤenja, VARCHAR prihvaฤ‡a od 1 do 65535 znakova, a CHAR je fiksni na do 255.
  • ๐Ÿ“… Datum i vrijeme: DATE pohranjuje obiฤnu vrijednost u formatu GGGG-MM-DD, a TIMESTAMP dodaje opcionalnu preciznost od nanosekundi.
  • ๐Ÿงฉ Sloลพene vrste: ARRAY, MAP, STRUCT i UNIONTYPE pakiraju nekoliko povezanih vrijednosti u jedan stupac umjesto mnogo njih.
  • ๐Ÿ—๏ธ Izradite bazu podataka: CREATE DATABASE registrira imenski prostor u metastoreu, a SHOW DATABASES potvrฤ‘uje da on postoji.
  • ๐Ÿ—‘๏ธ Izbriลกi bazu podataka: DROP DATABASE uklanja imenski prostor, a CASCADE je potreban kad god se tablice joลก uvijek nalaze unutar njega.

Vrste podataka u Hiveu i kako stvarati i brisati baze podataka u Hiveu

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.

Hive shell kreira guru99 bazu podataka i ispisuje baze podataka pomoฤ‡u show-a

Iz gornje snimke zaslona vidimo da radimo dvije stvari:

  1. Stvaranje baze podataka โ€œguru99โ€ u Hive
  2. 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.

Pad ljuske koลกniceping baza podataka guru99 i potvrda uklanjanja pomoฤ‡u showa

Na gornjoj snimci zaslona radimo dvije stvari:

  1. Mi smo padping baza podataka 'guru99' iz Hivea
  2. 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.

Pitanja i odgovori

Ne. DATABASE i SCHEMA su zamjenjive kljuฤne rijeฤi u HiveQL-u, pa CREATE SCHEMA sales i CREATE DATABASE sales proizvode isti metastore objekt. Izbor je iskljuฤivo stvar stila tvrtke.

U direktoriju skladiลกta, obiฤno /user/hive/warehouse/database_name.db na HDFS-u. Klauzula LOCATION na CREATE DATABASE nadjaฤava tu putanju, a DESCRIBE DATABASE izvjeลกtava o tome koja je lokacija zapravo koriลกtena.

STRING je uobiฤajeni izbor jer nema deklarirano ograniฤenje i ne treba mu dopunjavanje. VARCHAR pomaลพe kada se mora nametnuti duljina, a CHAR odgovara kratkim kodovima fiksne ลกirine kao ลกto su kratice zemalja.

DOUBLE je binarni broj s pomiฤnim zarezom, pa se ponovljeni zbrojevi pomiฤu za dijelove centa. DECIMAL pohranjuje toฤne vrijednosti s navedenom preciznoลกฤ‡u i skalom, ลกto omoguฤ‡uje reproducibilnost financijskih ukupnih iznosa u svim ciklusima.

Obiฤni VREMENSKI OลฝIG ne odnosi se na vremensku zonu i ฤita se toฤno onako kako je napisan. Hive 3.1 dodao je VREMENSKI OลฝIG S LOKALNOM VREMENSKOM ZONOM, koji normalizira vrijednost u UTC pri pisanju i pretvara je pri ฤitanju.

Da. STRUCT se moลพe nalaziti unutar ARRAY-a, a MAP vrijednost moลพe sama biti STRUCT, dakle ARRAY > vrijedi u KoลกnicaDuboko ugnijeลพฤ‘ivanje komplicira razdjelnike, stoga ga odrลพavajte plitkim.

Da. Alati za profiliranje podataka uzorkuju kardinalnost, null stope i raspone vrijednosti, a zatim predlaลพu najuลพi izvedivi tip i format datoteke. Prijedlog tretirajte kao nacrt jer model ne moลพe vidjeti buduฤ‡a optereฤ‡enja.

Copilot izraฤ‘uje naredbe CREATE TABLE i CREATE DATABASE iz kratkog komentara, a agentski asistenti mogu pretvoriti uzorak datoteke u shemu. Uvijek provjerite DECIMAL skalu i klauzule o razdjelnicima prije pokretanja rezultata.

Saลพmite ovu objavu uz: