Hive ETL: Indlæser JSON, XML, tekstdataeksempler
⚡ Smart opsummering
Hive ETL omdanner tekst-, XML- og JSON-filer til forespørgselsbaserede tabeller ved at indlæse dem i Hive og extracværdier med xpath() og get_json_object(), hvilket giver analytikere en SQL-grænseflade over semistrukturerede Hadoop-data.
Hive som et ETL- og datawarehousing-værktøj oven på Hadoop Økosystemet tilbyder funktioner som datamodellering, datamanipulation, databehandling og dataforespørgsler. Dataeks.traction i Hive betyder oprettelse af tabeller i Hive og indlæsning af strukturerede og semistrukturerede data samt forespørgsler på data baseret på kravene.
Til batchbehandling skal vi skrive brugerdefinerede scripts ved hjælp af brugerdefinerede map- og reduce-scripts i et scriptsprog. Det giver en SQL som miljø og support for nem forespørgsel.
Arbejde med strukturerede data ved hjælp af Hive
Strukturerede data betyder, at dataene er i det korrekte format af rækker og kolonner. Dette minder mere om RDBMS data med rigtige rækker og kolonner.
Her skal vi indlæse strukturerede data, der findes i tekstfiler i Hive.
Trin 1) I dette trin opretter vi tabellen "employees_guru" med kolonnenavne som Id, Navn, Alder, Adresse, Løn og Afdeling for de ansatte med datatyper.
Fra ovenstående skærmbillede kan vi observere følgende:
- Oprettelse af tabellen "employees_guru"
- Indlæser data fra Employees.txt til tabellen “employees_guru”
Trin 2) I dette trin viser vi indholdet af tabellen ved hjælp af kommandoen "Select". Vi kan se tabellens indhold på følgende skærmbillede.
Eksempelkodestykke
Forespørgsler, der skal udfø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;
Arbejde med semistrukturerede data ved hjælp af Hive (XML, JSON)
Hive udfører ETL-funktionaliteter i Hadoop-økosystemet ved at fungere som en ETL værktøjDet kan være vanskeligt at udføre MapReduce i visse typer applikationer; Hive kan reducere denne kompleksitet og leverer den bedste løsning til IT-applikationer inden for data warehousing-sektoren.
Semistrukturerede data såsom XML og JSON kan behandles med mindre kompleksitet ved hjælp af Hive. Først vil vi se på, hvordan vi kan bruge Hive til XML.
XML til Hive-tabel
I dette skal vi indlæse XML-data i Hive-tabeller, og vi vil hente værdierne gemt inde i XML-tags.
Trin 1) Oprettelse af tabellen “xmlsample_guru” med en str-kolonne af datatypen string.
Fra ovenstående skærmbillede kan vi observere følgende:
- Oprettelse af tabellen "xmlsample_guru"
- Indlæser data fra test.xml til tabellen “xmlsample_guru”
Trin 2) Brug af XPath metoden xpath(), vil vi være i stand til at hente de data, der er gemt i XML-tags.
Fra ovenstående skærmbillede kan vi observere følgende:
- Ved at bruge xpath()-metoden henter vi de værdier, der er gemt under /emp/esal/ og /emp/ename/.
- Værdier, der findes i XML-tags. I dette trin viser vi faktiske værdier, der er gemt under XML-tags i tabellen "xmlsample_guru".
Bemærk at xpath() returnerer et array af strenge; xpath_string(), xpath_int() og xpath_double() returnerer en enkelt indtastet værdi.
Trin 3) I dette trin henter og viser vi den rå XML-fil fra tabellen “xmlsample_guru”.
Fra ovenstående skærmbillede kan vi observere følgende:
- De faktiske XML-data vises med tags
- Hvis vi observerer et enkelt tag, er det med "emp" som overordnet tag med "ename" og "esal" som underordnede tags.
Code uddrag:
Forespørgsler, der skal udfø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 (JavaScriptobjektnotation)
Data fra sociale medier og websteder gemmes normalt i JSON-format. Når vi forsøger at hente data fra onlineservere, returneres JSON-filer. Ved at bruge Hive som datalager kan vi indlæse JSON-data i Hive-tabeller ved at oprette skemaer.
JSON til Hive-tabel
I dette indlæser vi JSON-data i Hive-tabeller, og vi henter de værdier, der er gemt i JSON-skemaet.
Trin 1) I dette trin skal vi oprette en JSON-tabel med navnet "json_guru". Når den er oprettet, indlæser og viser vi indholdet af det faktiske skema.
Fra ovenstående skærmbillede kan vi observere følgende:
- Oprettelse af tabellen "json_guru"
- Indlæser data fra test.json til tabellen “json_guru”
- Viser det faktiske skema for JSON-filen, der er gemt i json_guru-tabellen
Trin 2) Ved at bruge metoden get_json_object() kan vi hente de dataværdier, der er gemt i JSON-hierarkiet.
Fra ovenstående skærmbillede kan vi observere følgende:
- Ved at bruge get_json_object(str,'$.ecode') kan den hente ecode-værdier fra tabellen json_guru. På samme måde kan den ved at bruge get_json_object(str,'$.ename') og get_json_object(str,'$.sal') hente ename- og sal-værdierne fra tabellen json_guru.
- Værdier gemt i JSON-hierarkiet i json_guru
Fordi get_json_object() analyserer dokumentet én gang pr. kald, er json_tuple() billigere, når der er behov for flere nøgler, og en JSON SerDe mapper dokumentet til typede kolonner ved indlæsning.
Code uddrag
Forespørgsler, der skal udføres
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;
Kompleks JSON til Hive-tabel
I dette skal vi indlæse komplekse JSON-data i Hive-tabeller, og vi henter de værdier, der er gemt i JSON-skemaet.
Trin 1) Opretter complexjson_guru med et felt i en enkelt kolonne.
Fra ovenstående skærmbillede kan vi observere følgende:
- Oprettelse af tabellen complexjson_guru med et enkelt kolonnefelt som strengdatatype
- Indlæser data i complexjson_guru fra den komplekse JSON-fil emp.json
Trin 2) Ved at bruge get_json_object kan vi hente det faktiske indhold, der er gemt i JSON-filhierarkiet.
Fra det følgende skærmbillede kan vi se outputtet af de data, der er gemt i complexjson_guru.
Trin 3) I dette trin kan vi ved hjælp af kommandoen "Select" se de komplekse JSON-data, der er gemt i tabellen "complexjson_guru".
Eksempelkodestykke
Forespørgsler, der skal udfø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 i realtidsprojekter – hvornår og hvor skal det bruges
Hvornår og hvor skal Hive bruges i Hadoop-økosystemet:
Når
- Når man arbejder med stærke og effektive statistiske funktioner på Hadoop-økosystemet
- Når man arbejder med struktureret og semistruktureret databehandling
- Som et datalagerværktøj med Hadoop
- Dataindtagelse i realtid med HBase, hvor Hive kan bruges
Hvor
- For nem brug som et ETL- og datawarehousing-værktøj
- At levere et SQL-type miljø og at forespørge som SQL ved hjælp af HiveQL
- At bruge og implementere brugerdefinerede kort- og reducer-scripts til specifikke klientkrav











