Hive ETL: JSON-, XML- en tekstgegevensvoorbeelden laden
Hive als ETL- en datawarehousing-tool bovenop Hadoop ecosysteem biedt functionaliteiten zoals datamodellering, datamanipulatie, dataverwerking en dataquerying. Data-extractie in Hive betekent het maken van tabellen in Hive en het laden van gestructureerde en semi-gestructureerde data, evenals het opvragen van data op basis van de vereisten.
Voor batchverwerking gaan we op maat gedefinieerde scripts schrijven met behulp van een aangepaste kaart en scripts verminderen met behulp van een scripttaal. Het zorgt voor SQL zoals omgeving en ondersteuning voor eenvoudig opvragen.
Werken met gestructureerde gegevens met behulp van Hive
Gestructureerde gegevens betekent dat gegevens de juiste indeling van rijen en kolommen hebben. Dit is meer zoiets RDBMS gegevens met de juiste rijen en kolommen.
Hier gaan we gestructureerde gegevens laden die aanwezig zijn in tekstbestanden in Hive
Stap 1) In deze stap maken we de tabel “employees_guru” met kolomnamen zoals Id, Naam, Leeftijd, Adres, Salaris en Afdeling van de werknemers met gegevenstypen.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken:
- Aanmaak van tabel “employees_guru”
- Gegevens uit Employees.txt laden in tabel “employees_guru”
Stap 2) In deze stap geven we de inhoud weer die in deze tabel is opgeslagen met behulp van de opdracht "Select". We kunnen de inhoud van de tabel bekijken in de volgende schermafbeelding.
– Voorbeeldcodefragment
Uit te voeren query's
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;
Werken met semi-gestructureerde gegevens met behulp van Hive (XML, JSON)
Hive voert ETL-functionaliteiten uit in het Hadoop-ecosysteem door te fungeren als ETL-toolHet kan lastig zijn om map reduce uit te voeren in bepaalde soorten applicaties. Hive kan de complexiteit verminderen en biedt de beste oplossing voor IT-applicaties in termen van datawarehousing.
Semi-gestructureerde data zoals XML en JSON kunnen met minder complexiteit worden verwerkt met Hive. Eerst zullen we zien hoe we Hive kunnen gebruiken voor XML.
XML NAAR HIVE-TABEL
Hierin gaan we XML-gegevens in Hive-tabellen laden en halen we de waarden op die zijn opgeslagen in de XML-tags.
Stap 1) Creatie van tabel “xmlsample_guru” met str-kolom met stringgegevenstype.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- Aanmaak van tabel “xmlsample_guru”
- Gegevens uit test.xml laden in tabel “xmlsample_guru”
Stap 2) gebruik XPath () methode kunnen we de gegevens ophalen die zijn opgeslagen in XML-tags.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- Met behulp van de XPATH() methode halen we de waarden op die zijn opgeslagen onder /emp/esal/ en /emp/ename/
- Waarden aanwezig in XML-tags. In deze stap geven we werkelijke waarden weer die zijn opgeslagen onder XML-tags in tabel "xmlsample_guru"
Stap 3) In deze stap zullen we de Raw XML van tabel “xmlsample_guru” ophalen en weergeven.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- De daadwerkelijke XML-gegevens die met tags worden weergegeven
- Als we een enkele tag waarnemen, is dit met “emp” als bovenliggende tag met “ename” en “esal” als onderliggende tags.
Codefragment:
Uit te voeren query's
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 (JavaNotatie van scriptobjecten)
Twitter- en websitegegevens worden opgeslagen in JSON-formaat. Telkens wanneer we gegevens van online servers proberen op te halen, worden JSON-bestanden geretourneerd. Door Hive als gegevensarchief te gebruiken, kunnen we JSON-gegevens in Hive-tabellen laden door schema's te maken.
JSON NAAR HIVE-TABEL
Hierin gaan we JSON-gegevens in Hive-tabellen laden en halen we de waarden op die zijn opgeslagen in het JSON-schema.
Stap 1) In deze stap gaan we de JSON-tabelnaam “json_guru” maken. Eenmaal gemaakt, wordt de inhoud van het daadwerkelijke schema geladen en weergegeven.
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- Aanmaak van tabel “json_guru”
- Gegevens uit test.json laden in tabel “json_guru”
- Het werkelijke schema weergeven van het JSON-bestand dat is opgeslagen in json_guru-tabellen
Stap 2) Met behulp van de get_json_object()-methode kunnen we de gegevenswaarden ophalen die zijn opgeslagen in de JSON-hiërarchie
Uit de bovenstaande schermafbeelding kunnen we het volgende waarnemen
- Met behulp van get_json_object (str,'$.ecode) kan het ecodewaarden ophalen uit tabel json_guru. Op dezelfde manier zal het gebruik van get_json_object (str,'$.ename) ,get_json_object (str,'$.Sali) de ename sal-waarden ophalen uit tabel json_guru
- Waarden opgeslagen in de JSON-hiërarchie in json_guru
Codefragment
Uit te voeren query's
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;
Complexe JSON NAAR HIVE TABEL
Hierbij gaan we complexe JSON-gegevens in Hive-tabellen laden en de waarden ophalen die in het JSON-schema zijn opgeslagen
Stap 1) Complexjson_guru maken met een veld met één kolom
Uit de bovenstaande schermafbeelding kunnen we het volgende opmaken
- Aanmaak op tabel complexjson_guru met enkelvoudig kolomveld als string-gegevenstype
- Gegevens laden in complexjson_guru vanuit het complexe JSON-bestand emp.json
Stap 2) Door get_json_object te gebruiken, kunnen we de daadwerkelijke inhoud ophalen die is opgeslagen in de JSON-bestandshiërarchie.
In de volgende schermafbeelding kunnen we de uitvoer zien van de gegevens die zijn opgeslagen in complexjson_guru.
Stap 3) In deze stap kunnen we met behulp van de opdracht “Selecteren” complexe JSON-gegevens zien die zijn opgeslagen in de tabel “complexjson_guru”
-Voorbeeldcodefragment,
Uit te voeren query's
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 realtime projecten – wanneer en waar te gebruiken
Wanneer en waar Hive gebruiken op het Hadoop-ecosysteem:
.
- Bij het werken met sterke en krachtige statistische functies in het Hadoop-ecosysteem
- Bij het werken met gestructureerde en semi-gestructureerde gegevensverwerking
- Als datawarehouse-tool met Hadoop
- Realtime gegevensopname met HBASE, Hive kan worden gebruikt
Waar
- Voor eenvoudig gebruik van ETL en datawarehousingtool
- Om een SQL-type omgeving te bieden en om query's uit te voeren zoals SQL met behulp van HIVEQL
- Om op maat gespecificeerde kaart- en reducer-scripts te gebruiken en te implementeren voor de specifieke klantvereisten