Taru ETL: JSON-i, XML-i, tekstiandmete näidete laadimine

⚡ Nutikas kokkuvõte

Hive ETL laadib teksti-, XML- ja JSON-failid päringutabeliteks, laadides need Hive'i ja ex-i.tracväärtuste määramine xpath() ja get_json_object() abil, andes analüütikutele SQL-liidese poolstruktureeritud Hadoopi andmete kaudu.

  • 🧱 Struktureeritud koormused: Eraldatud tekstifailist saab tabel, mille ROW FORMAT DELIMITED on lisatud FIELDS TERMINATED BY ja seejärel LOAD DATA LOCAL INPATH.
  • ???? ️ XML-i näidetracmine: Iga XML-dokumenti hoiab üks STRING-veerg ja xpath() ammutab nimetatud siltidest väärtused.
  • 🔑 JSON-i näidetracmine: get_json_object() loeb iga kutse kohta ühe JSONPath-avaldise, seega vajab iga väli omaette kutset.
  • 🪜 Pesastatud kasulikud koormused: Kompleksne JSON laadib täpselt samamoodi ja hierarhias käiakse läbi punktiiridega JSONPath-avaldiste abil.
  • 📍 Tee reeglid: Märksõna LOCAL loeb Linuxi failisüsteemist, selle väljajätmine lahendab tee HDFS-is.
  • 🎯 Kuhu see sobib: Taru sobib pigem partiide ladustamiseks ja poolstruktureeritud ETL-iks kui madala latentsusega kirjete otsinguteks.

Hive ETL: JSON-i, XML-i ja tekstiandmete laadimine

Hive kui ETL ja andmeladustamise tööriist hadoop ökosüsteem pakub selliseid funktsioone nagu andmete modelleerimine, andmetega manipuleerimine, andmetöötlus ja andmepäringud. Andmete extracHive'is tähendab tabelite loomist Hive'is ning struktureeritud ja poolstruktureeritud andmete laadimist ja andmete päringute tegemist vastavalt nõuetele.

Pakktöötluse jaoks kirjutame kohandatud skripte, kasutades kohandatud kaarti ja vähendame skripte skriptikeeles. See pakub SQL nagu keskkond ja tugi hõlpsaks päringute tegemiseks.

Struktureeritud andmetega töötamine Hive'i abil

Struktureeritud andmed tähendavad, et andmed on ridade ja veergude õiges vormingus. See on pigem selline RDBMS andmed õigete ridade ja veergudega.

Siin laadime Hive'i tekstifailides olevaid struktureeritud andmeid.

Step 1) Selles etapis loome tabeli “employees_guru” veergude nimedega nagu Id, Nimi, Vanus, Aadress, Palk ja Osakond töötajate andmetüüpidega.

Employees_guru tabeli loomine ja Employees.txt faili laadimine Hive'is

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Tabeli “employees_guru” loomine
  2. Laadime andmeid failist Employees.txt tabelisse „employees_guru”

Step 2) Selles etapis kuvame tabelisse salvestatud sisu käsu „Vali“ abil. Tabeli sisu näeme järgmisel ekraanipildil.

Valige päringu väljund, mis kuvab employees_guru taru tabeli ridu

Näidiskoodilõik

Päringud, mis tuleb täita

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;

Poolstruktureeritud andmetega töötamine Hive'i abil (XML, JSON)

Hive täidab Hadoopi ökosüsteemis ETL-funktsioone, toimides järgmiselt: ETL tööriistMapReduce'i rakendamine võib teatud tüüpi rakendustes olla keeruline; Hive suudab seda keerukust vähendada ja pakub andmeladustamise sektori IT-rakendustele parimat lahendust.

Poolstruktureeritud andmeid, näiteks XML-i ja JSON-i, saab Hive'i abil töödelda väiksema keerukusega. Esmalt vaatame, kuidas me saame Hive'i selleks kasutada XML.

XML-ist taru tabelisse

Selle käigus laadime XML-andmed Hive tabelitesse ja hangime XML-märgendite sees salvestatud väärtused.

Step 1) Tabeli „xmlsample_guru” loomine string-andmetüübiga string-veeruga.

xmlsample_guru tabeli loomine ja test.xml laadimine Hive'i

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Tabeli “xmlsample_guru” loomine
  2. Andmete laadimine failist test.xml tabelisse „xmlsample_guru”

Step 2) kasutades XPath meetodi xpath() abil saame hankida XML-siltide sees talletatud andmed.

xpath() päring, mis tagastab XML-veerust ename ja esal väärtused

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Kasutades xpath() meetodit, hangime /emp/esal/ ja /emp/ename/ kaustadesse salvestatud väärtused.
  2. XML-siltide sees olevad väärtused. Selles etapis kuvame tabelis „xmlsample_guru” XML-siltide all salvestatud tegelikke väärtusi.

Pane tähele, et xpath() tagastab stringide massiivi; xpath_string(), xpath_int() ja xpath_double() tagastavad ühe tüüpitud väärtuse.

Step 3) Selles etapis toome ja kuvame tabeli „xmlsample_guru” toore XML-i.

xmlsample_guru str-veeru salvestatud toored XML-dokumendid

Ülaltoodud ekraanipildilt näeme järgmist.

  • Tegelikud XML-andmed, mis kuvatakse koos siltidega
  • Kui vaatleme ühte silti, on selle vanemsildiks „emp“ ning alamsiltideks „ename“ ja „esal“.

Code katkend:

Päringud, mis tuleb täita

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 (JavaSkriptiobjekti tähistus)

Sotsiaalmeedia ja veebisaitide andmeid salvestatakse tavaliselt JSON-vormingus. Alati, kui proovime andmeid veebiserveritest hankida, tagastatakse JSON-faile. Hive'i andmesalvestusena kasutades saame JSON-andmeid Hive'i tabelitesse laadida, luues skeeme.

JSON-ist taru tabelisse

Selles laadime JSON-andmed Hive'i tabelitesse ja toome JSON-skeemis talletatud väärtused.

Step 1) Selles etapis loome JSON-tabeli nimega „json_guru“. Kui see on loodud, laadime ja kuvame tegeliku skeemi sisu.

json_guru loomine, test.json faili laadimine ja JSON-skeemi kuvamine

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Tabeli “json_guru” loomine
  2. Andmete laadimine failist test.json tabelisse „json_guru”
  3. Json_guru tabelisse salvestatud JSON-faili tegeliku skeemi kuvamine

Step 2) Meetodi get_json_object() abil saame hankida JSON-hierarhias talletatud andmeväärtused.

get_json_object() väljund, kus on kirjas json_guru ecode, ename ja salary

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Funktsiooni get_json_object(str,'$.ecode') abil saab see hankida eCode'i väärtused tabelist json_guru. Samamoodi, kasutades funktsioone get_json_object(str,'$.ename') ja get_json_object(str,'$.sal'), saab see ename ja sal väärtused tabelist json_guru.
  2. JSON-hierarhias json_guru failis talletatud väärtused

Kuna get_json_object() parsib dokumenti iga kutse jooksul üks kord, on json_tuple() odavam, kui on vaja mitut võtit, ja JSON SerDe kaardistab dokumendi laadimise ajal tüüpitud veergudele.

Code väljalõige

Päringud, mis tuleb täita

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;

Kompleksne JSON taru tabelisse

Selles laadime Hive'i tabelitesse keerulisi JSON-andmeid ja toome JSON-skeemis talletatud väärtused.

Step 1) Ühe veeruväljaga complexjson_guru loomine.

complexjson_guru loomine ja emp.jsoni laadimine Hive tabelisse

Ülaltoodud ekraanipildilt näeme järgmist.

  1. Tabeli complexjson_guru loomine ühe veeruväljaga stringandmetüübina
  2. Andmete laadimine emp.json komplekssest JSON-failist complexjson_guru'sse

Step 2) Funktsiooni get_json_object abil saame kätte JSON-failihierarhias talletatud tegeliku sisu.

Järgmiselt ekraanipildilt näeme complexjson_guru faili salvestatud andmete väljundit.

Extracted ecode ja pesastatud võtmeväärtused keerulisest JSON-dokumendist

Step 3) Selles etapis näeme käsu „Select“ abil tabelis „complexjson_guru“ talletatud keerulisi JSON-andmeid.

Valige väljund, mis kuvab toores kompleksseid JSON-ridu complexjson_guru failis

Näidiskoodilõik

Päringud, mis tuleb täita

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 reaalajas projektides – millal ja kus kasutada

Millal ja kus Hive'i Hadoopi ökosüsteemis kasutada:

Kui

  • Hadoopi ökosüsteemis tugevate ja võimsate statistiliste funktsioonidega töötades
  • Struktureeritud ja poolstruktureeritud andmetöötlusega töötamisel
  • Andmelao tööriistana Hadoopiga
  • Reaalajas andmete sisestamine HBase'i abil, kus saab kasutada Hive'i

Kus

  • ETL-i ja andmeladustamise tööriistana kasutamise lihtsuse tagamiseks
  • SQL-tüübi keskkonna pakkumiseks ja SQL-i sarnaste päringute tegemiseks HiveQL-i abil
  • Kohandatud kaardi- ja reduktoriskriptide kasutamiseks ja juurutamiseks vastavalt kliendi vajadustele

KKK

LOCAL kopeerib faili kliendi masina failisüsteemist. Ilma LOCALita käsitleb Hive teed HDFS-ina ja liigutab faili, seega suhteline tee suunatakse kasutaja HDFS-i kodu alla.

json_tuple() on tavaliselt kiirem: see parsib dokumendi ühe korra ja tagastab mitu võtit korraga, samas kui get_json_object() parsib stringi iga välja jaoks uuesti. Ühe väärtuse korral kasutage get_json_object() funktsiooni.

Ei. Üks STRING-veerg koos JSON-funktsioonidega töötab. SerDe, näiteks org.apache.hive.hcatalog.data.JsonSerDe, sobib korduvatele tootmispäringutele, kaardistusteleping võtmed sisestatakse tüüpitud veergudele üks kord, mitte iga lugemise korral.

Tavaliselt ilusa trükiga fail: Hive ootab iga rea ​​kohta ühte terviklikku JSON-dokumenti, seega mitmele reale jagatud dokument muutub kehtetuteks ridadeks. Valesti kirjutatud võti või vale suur- ja väiketäht JSONPath-is teeb sama.

xpath() tagastab alati stringide massiivi. Kasutage selle asemel tüübitud varianti: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() või xpath_boolean(). Igaüks tagastab ühe seda tüüpi skalaari.

Väline on toores maandumisandmete jaoks turvalisem, kuna see langebping Tabel jätab failid oma kohale. Hallatud tabel kustutab oma andmekataloogi DROP-käsuga – mugav algtabelite puhul, hävitav jagatud failide puhul.

Masinõppe tööriistad profiilivad näidisfaile tüüpide tuletamiseks, hõredate võtmete märgistamiseks ja päringumustrite põhjal partitsiooniveergude pakkumiseks. Väljundit käsitletakse mustandina – tüüpe ja partitsioone tuleb ikkagi tegelike mahtudega võrreldes kontrollida.

See loob redaktorisse kleebitud näidiskirje põhjal CREATE TABLE lauseid, LOAD DATA käske ja JSONPath avaldisi. See ei näe klastrit, seega tuleb nimede, teede ja võtmete õigekiri kõigepealt kontrollida.

Võta see postitus kokku järgmiselt: