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: