Hive ETL: Laster inn JSON, XML, tekstdataeksempler
Hive som et ETL og datavarehusverktøy på toppen av Hadoop økosystemet tilbyr funksjoner som datamodellering, datamanipulering, databehandling og dataspørring. Datautvinning i Hive betyr å lage tabeller i Hive og laste inn strukturerte og semistrukturerte data samt spørre etter data basert på kravene.
For batchbehandling skal vi skrive tilpassede definerte skript ved å bruke et tilpasset kart og redusere skript ved å bruke et skriptspråk. Det gir SQL som miljø og støtte for enkel spørring.
Arbeide med strukturerte data ved hjelp av Hive
Strukturerte data betyr at data er i riktig format for rader og kolonner. Dette er mer som RDBMS data med riktige rader og kolonner.
Her skal vi laste inn strukturerte data som finnes i tekstfiler i Hive
Trinn 1) I dette trinnet lager vi tabell "ansatte_guru" med kolonnenavn som Id, Navn, Alder, Adresse, Lønn og Avdeling for de ansatte med datatyper.
Fra skjermbildet ovenfor kan vi observere følgende,
- Oppretting av tabellen "ansatte_guru"
- Laster data fra Employees.txt til tabellen "employees_guru"
Trinn 2) I dette trinnet viser vi innholdet som er lagret i denne tabellen ved å bruke "Velg"-kommandoen. Vi kan se tabellinnholdet i følgende skjermbilde.
– Eksempelkodebit
Spørsmål som skal utføres
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;
Arbeide med semistrukturerte data ved hjelp av Hive (XML, JSON)
Hive utfører ETL-funksjoner i Hadoop-økosystemet ved å fungere som ETL-verktøy. Det kan være vanskelig å utføre kartreduksjon i noen type applikasjoner, Hive kan redusere kompleksiteten og gir den beste løsningen til IT-applikasjonene når det gjelder datavarehussektoren.
Semistrukturerte data som XML og JSON kan behandles med mindre kompleksitet ved å bruke Hive. Først skal vi se hvordan vi kan bruke Hive til XML.
XML TO HIVE TABELL
I dette skal vi laste XML-data inn i Hive-tabeller, og vi vil hente verdiene som er lagret inne i XML-taggene.
Trinn 1) Oppretting av tabell "xmlsample_guru" med str kolonne med strengdatatype.
Fra skjermbildet ovenfor kan vi observere følgende
- Oppretting av tabellen "xmlsample_guru"
- Laster data fra test.xml til tabellen «xmlsample_guru»
Trinn 2) Ved hjelp av XPath () metoden vil vi kunne hente dataene som er lagret i XML-koder.
Fra skjermbildet ovenfor kan vi observere følgende
- Ved å bruke XPATH( )-metoden henter vi verdiene lagret under /emp/esal/ og /emp/ename/
- Verdier til stede i XML-koder. I dette trinnet viser vi faktiske verdier lagret under XML-koder i tabellen "xmlsample_guru"
Trinn 3) I dette trinnet vil vi hente og vise rå XML-en til tabellen "xmlsample_guru."
Fra skjermbildet ovenfor kan vi observere følgende
- De faktiske XML-dataene vises med tagger
- Hvis vi observerer enkelt tag, er det med "emp" som overordnet tag med "ename" og "esal" som underordnede tags.
Kodebit:
Spørsmål som skal utføres
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 (JavaSkriptobjektnotasjon)
Twitter og nettstedsdata lagres i JSON-format. Hver gang vi prøver å hente data fra nettservere vil det returnere JSON-filer. Ved å bruke Hive som datalager kan vi laste JSON-data inn i Hive-tabeller ved å lage skjemaer.
JSON TO HIVE TABELL
I dette skal vi laste JSON-data inn i Hive-tabeller, og vi vil hente verdiene som er lagret i JSON-skjemaet.
Trinn 1) I dette trinnet skal vi lage JSON-tabellnavnet "json_guru". Når den er opprettet, laster og viser innholdet i det faktiske skjemaet.
Fra skjermbildet ovenfor kan vi observere følgende
- Oppretting av tabellen "json_guru"
- Laster data fra test.json til tabellen "json_guru"
- Viser faktisk skjema for JSON-fil lagret i json_guru-tabeller
Trinn 2) Ved å bruke get_json_object()-metoden kan vi hente dataverdiene som er lagret i JSON-hierarkiet
Fra skjermbildet ovenfor kan vi observere følgende
- Ved å bruke get_json_object (str,'$.ecode) kan den hente ecode-verdier fra tabellen json_guru. På samme måte ved å bruke get_json_object (str,'$.ename), get_json_object (str,'$.Sali) vil det hente ename sal-verdier fra tabellen json_guru
- Verdier lagret inne i JSON-hierarkiet i json_guru
Kodebit
Spørsmål som skal utføres
1) create table json_guru(str string); 2) load data inpath 'home/hduser/test.json' into table json_guru; 3) select * from json1; 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;
Kompleks JSON TO HIVE TABELL
I dette skal vi laste komplekse JSON-data inn i Hive-tabeller, og vi vil hente verdiene som er lagret i JSON-skjemaet
Trinn 1) Opprette complexjson_guru med enkelt kolonnefelt
Fra skjermbildet ovenfor kan vi observere følgende
- Oppretting på tabell complexjson_guru med enkelt kolonnefelt som strengdatatype
- Laster data inn i complexjson_guru fra emp.json kompleks JSON-fil
Trinn 2) Ved å bruke get_json_object kan vi hente det faktiske innholdet som er lagret i JSON-filhierarkiet.
Fra følgende skjermbilde kan vi se utdataene som er lagret i complexjson_guru.
Trinn 3) I dette trinnet, ved å bruke "Select"-kommandoen, kan vi faktisk se komplekse JSON-data lagret i tabellen "complexjson_guru"
- Eksempel på kodebit,
Spørsmål som skal utføres
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 in sanntidsprosjekter – når og hvor du kan bruke dem
Når og hvor du skal bruke Hive på Hadoop Ecosystem:
Når
- Når du jobber med sterke og kraftige statistiske funksjoner på Hadoop-økosystemet
- Når du arbeider med strukturert og semistrukturert databehandling
- Som datavarehusverktøy med Hadoop
- Sanntidsdatainntak med HBASE, Hive kan brukes
Hvor
- For enkel bruk av ETL og datavarehusverktøy
- For å tilby et miljø av typen SQL og å spørre som SQL ved hjelp av HIVEQL
- For å bruke og distribuere egendefinerte kart- og reduseringsskript for de spesifikke klientkravene