Hive ETL: Ladataan JSON-, XML-, tekstitietoesimerkkejä

⚡ Älykäs yhteenveto

Hive ETL muuntaa teksti-, XML- ja JSON-tiedostot kyselykelpoisiksi taulukoiksi lataamalla ne Hiveen ja ex-tiedostoihin.tracarvojen syöttäminen xpath():lla ja get_json_object():lla, mikä antaa analyytikoille SQL-rajapinnan puolistrukturoidun Hadoop-datan yli.

  • 🧱 Rakenteelliset kuormat: Erotinmerkeillä eroteltu tekstitiedosto muuttuu taulukoksi, jonka ROW FORMAT DELIMITED -määritykset ovat sekä FIELDS TERMINATED BY -määritykset että LOAD DATA LOCAL INPATH -määritykset.
  • 🏷️ XML-esimerkkitracseen: Yksi STRING-sarake sisältää jokaisen XML-dokumentin, ja xpath() hakee arvot nimetyistä tageista.
  • 🔑 JSON-esimerkkitracseen: get_json_object() lukee yhden JSONPath-lausekkeen kutsua kohden, joten jokainen kenttä tarvitsee oman kutsunsa.
  • 🪜 Sisäkkäiset hyötykuormat: Monimutkaiset JSON-tiedostot latautuvat täsmälleen samalla tavalla, ja hierarkiaa seurataan pisteillä varustetuilla JSONPath-lausekkeilla.
  • 📍 Polun säännöt: LOCAL-avainsana lukee Linux-tiedostojärjestelmästä, ja sen poisjättäminen selvittää polun HDFS:ssä.
  • 🎯 Mihin se sopii: Hive sopii erävarastointiin ja puolistrukturoituun ETL:ään pikemminkin kuin matalan latenssin omaaviin tietuehakuihin.

Hive ETL: JSON-, XML- ja tekstidatan lataaminen

Hive ETL- ja tietovarastointityökaluna Hadoop ekosysteemi tarjoaa toimintoja, kuten datan mallinnuksen, datan manipuloinnin, datan käsittelyn ja datakyselyt. Data extracHivessä tarkoitetaan taulukoiden luomista Hiveen ja strukturoidun ja puolistrukturoidun datan lataamista sekä datan kyselyä vaatimusten perusteella.

Eräkäsittelyä varten aiomme kirjoittaa mukautettuja komentosarjoja käyttämällä mukautettua karttaa ja lyhentää komentosarjoja komentosarjakielellä. Se tarjoaa SQL kuten ympäristö ja tuki helppoa kyselyä varten.

Työskentely strukturoidun tiedon kanssa Hiven avulla

Rakenteinen data tarkoittaa, että data on oikeassa rivi- ja sarakemuodossa. Tämä on pikemminkin kuin RDBMS tiedot oikeilla riveillä ja sarakkeilla.

Tässä lataamme Hive-tiedostoissa olevia strukturoituja tietoja.

Vaihe 1) Tässä vaiheessa luomme taulukon "employees_guru" sarakkeiden nimillä, kuten Id, Nimi, Ikä, Osoite, Palkka ja Osasto tietotyypeineen.

Employees_guru-taulukon luominen ja Employees.txt-tiedoston lataaminen Hiveen

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Taulukon "employees_guru" luominen
  2. Ladataan tietoja Employees.txt-tiedostosta taulukkoon “employees_guru”

Vaihe 2) Tässä vaiheessa näytämme tähän taulukkoon tallennetun sisällön käyttämällä "Select"-komentoa. Voimme tarkastella taulukon sisältöä seuraavassa kuvakaappauksessa.

Valitse kyselyn tuloste, joka näyttää employees_guru Hive-taulukon rivit

Esimerkki koodinpätkästä

Suoritettavat kyselyt

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;

Puolistrukturoidun datan käsittely Hiven avulla (XML, JSON)

Hive suorittaa ETL-toimintoja Hadoop-ekosysteemissä toimimalla ETL työkaluMapReducen suorittaminen voi olla vaikeaa tietyntyyppisissä sovelluksissa; Hive voi vähentää tätä monimutkaisuutta ja tarjoaa parhaan ratkaisun IT-sovelluksille tietovarastointisektorin kannalta.

Puolistrukturoitua dataa, kuten XML:ää ja JSON:ia, voidaan käsitellä vähemmän monimutkaisesti Hiven avulla. Ensin katsomme, miten voimme käyttää Hiveä seuraaviin tarkoituksiin: XML.

XML Hive-taulukkoon

Tässä aiomme ladata XML-tietoja Hive-taulukoihin ja haemme XML-tunnisteisiin tallennetut arvot.

Vaihe 1) Taulukon ”xmlsample_guru” luonti, jonka tietotyyppi on merkkijono ja jonka sarake on merkkijono.

xmlsample_guru-taulukon luominen ja test.xml-tiedoston lataaminen Hiveen

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Taulukon "xmlsample_guru" luominen
  2. Ladataan tietoja test.xml-tiedostosta taulukkoon “xmlsample_guru”

Vaihe 2) Käyttäen XPath xpath()-metodin avulla voimme hakea XML-tageihin tallennetut tiedot.

xpath()-kysely palauttaa ename- ja esal-arvot XML-sarakkeesta

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Käyttämällä xpath()-metodia noudamme /emp/esal/- ja /emp/ename/-hakemistoihin tallennetut arvot.
  2. XML-tunnisteiden sisällä olevat arvot. Tässä vaiheessa näytämme XML-tunnisteiden alle tallennetut todelliset arvot taulukossa ”xmlsample_guru”.

Huomaa, että xpath() palauttaa merkkijonotaulukon; xpath_string(), xpath_int() ja xpath_double() palauttavat yhden tyypityn arvon.

Vaihe 3) Tässä vaiheessa noudamme ja näytämme taulukon ”xmlsample_guru” raaka-XML-tiedoston.

Raa'at XML-dokumentit tallennetaan xmlsample_guru-tiedoston str-sarakkeeseen

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  • Varsinainen XML-data, joka näytetään tunnisteiden kanssa
  • Jos havaitsemme vain yhden tagin, sen päätagina on "emp" ja lapsitagina "ename" ja "esal".

Code katkelma:

Suoritettavat kyselyt

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 (JavaScript Object Notation)

Sosiaalisen median ja verkkosivustojen tiedot tallennetaan yleensä JSON-muodossa. Aina kun yritämme hakea tietoja verkkopalvelimilta, se palauttaa JSON-tiedostoja. Käyttämällä Hiveä tietovarastona voimme ladata JSON-tietoja Hive-taulukoihin luomalla skeemoja.

JSON Hive-taulukkoon

Tässä lataamme JSON-dataa Hive-taulukoihin ja noudamme JSON-skeemaan tallennetut arvot.

Vaihe 1) Tässä vaiheessa luomme JSON-taulukon nimeltä ”json_guru”. Kun se on luotu, lataamme ja näytämme varsinaisen skeeman sisällön.

json_gurun luominen, test.json-tiedoston lataaminen ja JSON-skeeman näyttäminen

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Taulukon "json_guru" luominen
  2. Ladataan dataa test.json-tiedostosta taulukkoon “json_guru”
  3. json_guru-taulukkoon tallennetun JSON-tiedoston todellisen skeeman näyttäminen

Vaihe 2) get_json_object()-metodin avulla voimme hakea JSON-hierarkiaan tallennetut data-arvot.

get_json_object() tulostuu listaamalla json_gurusta ecoden, enamen ja palkan

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Käyttämällä get_json_object(str,'$.ecode') se voi hakea ecode-arvoja taulukosta json_guru. Vastaavasti käyttämällä get_json_object(str,'$.ename') ja get_json_object(str,'$.sal') se hakee ename- ja sal-arvot taulukosta json_guru.
  2. JSON-hierarkian sisällä json_guru-tiedostossa tallennetut arvot

Koska get_json_object() jäsentää dokumentin kerran kutsua kohden, json_tuple() on halvempi, kun tarvitaan useita avaimia, ja JSON SerDe mappaa dokumentin tyypitettyihin sarakkeisiin latausaikana.

Code pätkä

Suoritettavat kyselyt

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;

Monimutkainen JSON Hive-taulukkoon

Tässä lataamme monimutkaista JSON-dataa Hive-taulukoihin ja noudamme JSON-skeemaan tallennetut arvot.

Vaihe 1) Yhden sarakkeen kentän avulla luodaan complexjson_guru.

complexjson_gurun luominen ja emp.json-tiedoston lataaminen Hive-taulukkoon

Yllä olevasta kuvakaappauksesta voimme havaita seuraavaa:

  1. Yhden merkkijonotyyppisen sarakekentän luonti taulukossa complexjson_guru
  2. Datan lataaminen complexjson_guru-tiedostoon emp.json-kompleksisesta JSON-tiedostosta

Vaihe 2) Käyttämällä get_json_object-metodia voimme hakea JSON-tiedostohierarkiaan tallennetun varsinaisen sisällön.

Seuraavasta kuvakaappauksesta näemme complexjson_guru-muuttujaan tallennetun datan tulosteen.

Extracted-ekokoodi ja sisäkkäiset avainarvot monimutkaisesta JSON-dokumentista

Vaihe 3) Tässä vaiheessa käyttämällä ”Select”-komentoa voimme nähdä ”complexjson_guru”-taulukkoon tallennetut monimutkaiset JSON-tiedot.

Valitse tuloste, joka näyttää raakat kompleksiset JSON-rivit complexjson_guru-kohdassa

Esimerkki koodinpätkästä

Suoritettavat kyselyt

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 reaaliaikaisissa projekteissa – milloin ja missä käyttää

Milloin ja missä Hiveä käytetään Hadoop-ekosysteemissä:

Kun

  • Kun työskentelet vahvojen ja tehokkaiden tilastollisten funktioiden kanssa Hadoop-ekosysteemissä
  • Kun työskentelet strukturoidun ja puolistrukturoidun tiedonkäsittelyn parissa
  • Tietovarastotyökaluna Hadoopin kanssa
  • Reaaliaikainen datan syöttäminen HBasen avulla, jossa Hiveä voidaan käyttää

Missä

  • Helppokäyttöisyyttä varten ETL- ja tietovarastointityökaluna
  • SQL-tyyppiympäristön tarjoaminen ja SQL-kyselyiden tekeminen HiveQL:n avulla
  • Käyttää ja ottaa käyttöön mukautettuja kartta- ja reducer-skriptejä tiettyjen asiakasvaatimusten mukaisesti

UKK

LOCAL kopioi tiedoston asiakaskoneen tiedostojärjestelmästä. Ilman LOCAL-käskyä Hive käsittelee polkua HDFS-polkuna ja siirtää tiedoston, joten suhteellinen polku sijoittuu käyttäjän HDFS-kotihakemiston alle.

json_tuple() on yleensä nopeampi: se jäsentää dokumentin kerran ja palauttaa useita avaimia yhdessä, kun taas get_json_object() jäsentää merkkijonon uudelleen jokaiselle kentälle. Käytä get_json_object()-funktiota yksittäiselle arvolle.

Ei. Yksi STRING-sarake ja JSON-funktiot toimivat. SerDe, kuten org.apache.hive.hcatalog.data.JsonSerDe, sopii toistuviin tuotantokyselyihin, map-tiedostoihinping avaimet tyypitettyihin sarakkeisiin kerran jokaisen lukukerran sijaan.

Yleensä kauniisti tulostettu tiedosto: Hive odottaa yhtä kokonaista JSON-dokumenttia riviä kohden, joten usealle riville jaetusta dokumentista tulee virheellisiä rivejä. Väärin kirjoitettu avain tai väärä kirjainkoko JSONPath-muuttujassa tekee saman.

xpath() palauttaa aina merkkijonotaulukon. Käytä sen sijaan tyypitettyä varianttia: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() tai xpath_boolean(). Jokainen palauttaa yhden kyseisen tyyppisen skalaarin.

Ulkoinen on turvallisempi raakalaskeutumisdatalle, koska pudotusping Taulukko jättää tiedostot paikoilleen. Hallittu taulukko poistaa datahakemistonsa DROP-komennossa – kätevää alustaville taulukoille, mutta tuhoisaa jaetuille tiedostoille.

Koneoppimistyökalut profiloivat esimerkkitiedostoja tyyppien päättelemiseksi, merkitsevät harvoja avaimia ja ehdottavat osiointisarakkeita kyselymalleista. Tulostetta käsitellään luonnoksena — tyypit ja osiot on vielä tarkistettava oikeita levyjä vasten.

Se luonnostelee CREATE TABLE -lausekkeita, LOAD DATA -komentoja ja JSONPath-lausekkeita editoriin liitetystä esimerkkitietueesta. Se ei näe klusteria, joten nimien, polut ja avainten oikeinkirjoitus on ensin tarkistettava.

Tiivistä tämä viesti seuraavasti: