Hive ETL: učitavanje JSON, XML, primjeri tekstualnih podataka

⚡ Pametni sažetak

Hive ETL pretvara tekstualne, XML i JSON datoteke u tablice za upite učitavanjem istih u Hive i extracpretvaranje vrijednosti pomoću xpath() i get_json_object(), dajući analitičarima SQL sučelje preko polustrukturiranih Hadoop podataka.

  • 🧱 Strukturirana opterećenja: Datoteka s razgraničenim tekstom postaje tablica s ROW FORMAT DELIMITED plus FIELDS TERMINATED BY, a zatim LOAD DATA LOCAL INPATH.
  • 🏷️ XML primjertraccija: Jedan STRING stupac sadrži svaki XML dokument, a xpath() izvlači vrijednosti iz imenovanih oznaka.
  • 🔑 JSON extraccija: get_json_object() čita jedan JSONPath izraz po pozivu, tako da svako polje treba svoj vlastiti poziv.
  • 🪜 Ugniježđeni korisni tereti: Složeni JSON se učitava na potpuno isti način, a hijerarhija se obilazi pomoću točkastih JSONPath izraza.
  • ???? Pravila puta: Ključna riječ LOCAL čita s Linux datotečnog sustava, dok njezino izostavljanje rješava putanju na HDFS-u.
  • 🎯 Gdje odgovara: Hive je prikladniji za skladištenje u serijama i polustrukturirani ETL, a ne za pretraživanje zapisa s niskom latencijom.

Hive ETL: Učitavanje JSON, XML i tekstualnih podataka

Hive kao ETL i alat za skladištenje podataka na vrhu Hadoop Ekosustav pruža funkcionalnosti poput modeliranja podataka, manipulacije podacima, obrade podataka i upita podataka. Data extracUpravljanje u Hiveu znači stvaranje tablica u Hiveu i učitavanje strukturiranih i polustrukturiranih podataka, kao i ispitivanje podataka na temelju zahtjeva.

Za skupnu obradu, pisat ćemo prilagođene definirane skripte koristeći prilagođene map i reduce skripte u skriptnom jeziku. To pruža SQL poput okruženja i podrške za jednostavno postavljanje upita.

Rad sa strukturiranim podacima pomoću Hive-a

Strukturirani podaci znače da su podaci u ispravnom formatu redaka i stupaca. To je više kao RDBMS podatke s odgovarajućim redovima i stupcima.

Ovdje ćemo učitati strukturirane podatke prisutne u tekstualnim datotekama u Hiveu.

Korak 1) U ovom koraku stvaramo tablicu "employees_guru" s nazivima stupaca kao što su Id, Ime, Dob, Adresa, Plaća i Odjel zaposlenika s tipovima podataka.

Izrada tablice employees_guru i učitavanje datoteke Employees.txt u Hive

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Izrada tablice “employees_guru”
  2. Učitavanje podataka iz Employees.txt u tablicu „employees_guru“

Korak 2) U ovom koraku prikazujemo sadržaj pohranjen u ovoj tablici pomoću naredbe "Select". Sadržaj tablice možemo vidjeti na sljedećoj snimci zaslona.

Izlaz upita za odabir koji prikazuje retke tablice employees_guru Hive

Primjer isječka koda

Upiti koje treba izvršiti

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Rad s polustrukturiranim podacima pomoću Hivea (XML, JSON)

Hive obavlja ETL funkcionalnosti u Hadoop ekosustavu djelujući kao ETL alatIzvođenje MapReduce-a u nekim vrstama aplikacija može biti teško; Hive može smanjiti tu složenost i pruža najbolje rješenje za IT aplikacije u sektoru skladištenja podataka.

Polustrukturirani podaci poput XML-a i JSON-a mogu se obraditi s manje složenosti pomoću Hivea. Prvo ćemo vidjeti kako možemo koristiti Hive za XML.

XML u tablicu košnice

U ovom ćemo učitati XML podatke u Hive tablice i dohvatit ćemo vrijednosti pohranjene unutar XML oznaka.

Korak 1) Izrada tablice „xmlsample_guru“ sa stupcem tipa string podataka tipa string.

Izrada tablice xmlsample_guru i učitavanje datoteke test.xml u Hive

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Izrada tablice “xmlsample_guru”
  2. Učitavanje podataka iz datoteke test.xml u tablicu „xmlsample_guru“

Korak 2) Korištenje XPath Metodom xpath() moći ćemo dohvatiti podatke pohranjene unutar XML oznaka.

xpath() upit vraća vrijednosti ename i esal iz XML stupca

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Pomoću metode xpath() dohvaćamo vrijednosti pohranjene u /emp/esal/ i /emp/ename/
  2. Vrijednosti prisutne unutar XML oznaka. U ovom koraku prikazujemo stvarne vrijednosti pohranjene pod XML oznakama u tablici „xmlsample_guru“.

Imajte na umu da xpath() vraća niz stringova; xpath_string(), xpath_int() i xpath_double() vraćaju jednu tipiziranu vrijednost.

Korak 3) U ovom koraku dohvatit ćemo i prikazati sirovi XML tablice „xmlsample_guru“.

Sirovi XML dokumenti pohranjeni u stupcu str datoteke xmlsample_guru

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  • Stvarni XML podaci koji se prikazuju s oznakama
  • Ako promatramo jednu oznaku, ona ima "emp" kao roditeljsku oznaku s "ename" i "esal" kao podređenim oznakama.

Code isječak:

Upiti koje treba izvršiti

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON (Javazapis objekta skripte)

Podaci društvenih mreža i web-mjesta obično se pohranjuju u JSON formatu. Kad god pokušamo dohvatiti podatke s online poslužitelja, vratit će se JSON datoteke. Korištenjem Hivea kao pohrane podataka možemo učitati JSON podatke u Hive tablice stvaranjem shema.

JSON u Hive tablicu

U ovom ćemo radu učitati JSON podatke u Hive tablice i dohvatit ćemo vrijednosti pohranjene u JSON shemi.

Korak 1) U ovom koraku ćemo stvoriti JSON tablicu pod nazivom „json_guru“. Nakon što je stvorimo, učitavamo i prikazujemo sadržaj stvarne sheme.

Izrada json_guru, učitavanje test.json datoteke i prikaz JSON sheme

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Izrada tablice “json_guru”
  2. Učitavanje podataka iz test.json datoteke u tablicu „json_guru“
  3. Prikaz stvarne sheme JSON datoteke pohranjene u tablici json_guru

Korak 2) Pomoću metode get_json_object() možemo dohvatiti vrijednosti podataka pohranjene u JSON hijerarhiji.

get_json_object() ispisuje ecode, ename i salary iz json_guru

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Korištenjem get_json_object(str,'$.ecode') može se dohvatiti ecode vrijednosti iz tablice json_guru. Slično tome, korištenjem get_json_object(str,'$.ename') i get_json_object(str,'$.sal') dohvatit će se vrijednosti ename i sal iz tablice json_guru.
  2. Vrijednosti pohranjene unutar JSON hijerarhije u json_guru

Budući da get_json_object() parsira dokument jednom po pozivu, json_tuple() je jeftiniji kada je potrebno nekoliko ključeva, a JSON SerDe mapira dokument na tipizirane stupce prilikom učitavanja.

Code isječak

Upiti koje treba izvršiti

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json_guru;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

Složena JSON u Hive tablicu

U ovom radu ćemo učitati složene JSON podatke u Hive tablice i dohvatit ćemo vrijednosti pohranjene u JSON shemi.

Korak 1) Izrada complexjson_guru s jednim poljem stupca.

Izrada complexjson_guru i učitavanje emp.json u Hive tablicu

Iz gornje snimke zaslona možemo vidjeti sljedeće:

  1. Izrada tablice complexjson_guru s jednim stupcem kao tipom podataka string
  2. Učitavanje podataka u complexjson_guru iz emp.json complex JSON datoteke

Korak 2) Korištenjem get_json_object možemo dohvatiti stvarni sadržaj koji je pohranjen unutar hijerarhije JSON datoteka.

Na sljedećoj snimci zaslona možemo vidjeti izlaz podataka pohranjenih u complexjson_guru.

Extracted ecode i ugniježđene ključne vrijednosti iz složenog JSON dokumenta

Korak 3) U ovom koraku, korištenjem naredbe "Select" možemo vidjeti složene JSON podatke pohranjene unutar tablice "complexjson_guru".

Odaberite izlaz koji prikazuje sirove složene JSON retke u complexjson_guru

Primjer isječka koda

Upiti koje treba izvršiti

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive u projektima u stvarnom vremenu – kada i gdje ga koristiti

Kada i gdje koristiti Hive u Hadoop ekosustavu:

Kada

  • Pri radu s jakim i moćnim statističkim funkcijama na Hadoop ekosustavu
  • Pri radu sa strukturiranom i polustrukturiranom obradom podataka
  • Kao alat za skladištenje podataka s Hadoopom
  • Unos podataka u stvarnom vremenu pomoću HBase-a, gdje se može koristiti Hive

Gdje

  • Za jednostavno korištenje kao ETL i alat za skladištenje podataka
  • Za pružanje SQL okruženja i za upite poput SQL-a pomoću HiveQL-a
  • Za korištenje i implementaciju prilagođenih specificiranih skripti za mapiranje i reducer za specifične zahtjeve klijenta

Pitanja i odgovori

LOCAL kopira datoteku iz datotečnog sustava klijentskog računala. Bez LOCAL-a, Hive tretira putanju kao HDFS i premješta datoteku, tako da se relativna putanja rješava pod korisničkim HDFS početnim direktorijem.

json_tuple() je obično brži: jednom analizira dokument i vraća nekoliko ključeva zajedno, dok get_json_object() ponovno analizira niz za svako polje. Koristite get_json_object() za jednu vrijednost.

Ne. Jedan STRING stupac plus JSON funkcije funkcioniraju. SerDe kao što je org.apache.hive.hcatalog.data.JsonSerDe odgovara ponovljenim produkcijskim upitima, mapping ključeve na unesene stupce jednom umjesto pri svakom čitanju.

Obično lijepo ispisana datoteka: Hive očekuje jedan potpuni JSON dokument po retku, pa dokument podijeljen u više redaka postaje nevažeći retci. Pogrešno napisan ključ ili pogrešna upotreba velikih i malih slova u JSONPathu čini isto.

xpath() uvijek vraća niz stringova. Umjesto toga koristite tipiziranu varijantu: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() ili xpath_boolean(). Svaka vraća jedan skalar tog tipa.

Vanjski je sigurniji za sirove podatke o slijetanju, jer padping Tablica ostavlja datoteke na mjestu. Upravljana tablica briše svoj direktorij podataka prilikom DROP-a - što je praktično za pomoćne tablice, a destruktivno za dijeljene datoteke.

Alati za strojno učenje profiliraju uzorke datoteka kako bi zaključili tipove, označili rijetke ključeve i predložili stupce particija iz uzoraka upita. Tretirajte izlaz kao nacrt - tipove i particije i dalje je potrebno provjeriti u odnosu na stvarne volumene.

Izrađuje naredbe CREATE TABLE, naredbe LOAD DATA i izraze JSONPath iz uzorka zapisa zalijepljenog u uređivač. Ne može vidjeti klaster, pa je prvo potrebno provjeriti imena, putanje i pravopis ključnih riječi.

Sažmite ovu objavu uz: