Hive ETL: JSON-, XML- en tekstgegevensvoorbeelden laden
⚡ Slimme samenvatting
Hive ETL zet tekst-, XML- en JSON-bestanden om in doorzoekbare tabellen door ze in Hive te laden en te exporteren.tracDoor waarden te koppelen met xpath() en get_json_object(), krijgen analisten een SQL-interface voor semi-gestructureerde Hadoop-gegevens.
Hive als ETL- en datawarehouse-tool bovenop de Hadoop Het ecosysteem biedt functionaliteiten zoals datamodellering, datamanipulatie, dataverwerking en dataquery's. Data extracIn Hive houdt het aanmaken van tabellen in Hive in dat gestructureerde en semi-gestructureerde data wordt geladen, en dat er query's op die data worden uitgevoerd op basis van de vereisten.
Voor batchverwerking gaan we aangepaste scripts schrijven met behulp van aangepaste map-and-reduce-scripts in een scripttaal. Dit biedt een SQL zoals omgeving en ondersteuning voor eenvoudig opvragen.
Werken met gestructureerde gegevens met behulp van Hive
Gestructureerde data betekent dat de data de juiste indeling heeft van rijen en kolommen. Dit is meer zoals RDBMS gegevens met de juiste rijen en kolommen.
Hier gaan we gestructureerde data uit tekstbestanden in Hive laden.
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 afleiden:
- Aanmaak van tabel “employees_guru”
- Gegevens uit Employees.txt laden in de tabel “employees_guru”
Stap 2) In deze stap tonen we de inhoud van deze tabel met behulp van de opdracht "Selecteren". De inhoud van de tabel is te zien 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 data met Hive (XML, JSON)
Hive voert ETL-functionaliteiten uit in het Hadoop-ecosysteem door te fungeren als een ETL-toolMapReduce kan in sommige soorten applicaties lastig zijn; Hive kan die complexiteit verminderen en biedt de beste oplossing voor IT-applicaties in de datawarehouse-sector.
Semi-gestructureerde data zoals XML en JSON kunnen met Hive op een minder complexe manier worden verwerkt. We zullen eerst bekijken 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) Aanmaken van tabel “xmlsample_guru” met een kolom van het gegevenstype string.
Uit de bovenstaande schermafbeelding kunnen we het volgende afleiden:
- Aanmaak van tabel “xmlsample_guru”
- Gegevens laden vanuit het test.xml-bestand in de tabel "xmlsample_guru".
Stap 2) De XPath Met de methode xpath() kunnen we de gegevens ophalen die in XML-tags zijn opgeslagen.
Uit de bovenstaande schermafbeelding kunnen we het volgende afleiden:
- Met behulp van de xpath()-methode halen we de waarden op die zijn opgeslagen onder /emp/esal/ en /emp/ename/.
- Waarden die zich binnen XML-tags bevinden. In deze stap tonen we de werkelijke waarden die onder de XML-tags zijn opgeslagen in de tabel "xmlsample_guru".
Merk op dat xpath() een array van strings retourneert; xpath_string(), xpath_int() en xpath_double() retourneren een enkele getypte waarde.
Stap 3) In deze stap halen we de ruwe XML van de tabel "xmlsample_guru" op en tonen we deze.
Uit de bovenstaande schermafbeelding kunnen we het volgende afleiden:
- De daadwerkelijke XML-gegevens die met tags worden weergegeven
- Als we naar één enkele tag kijken, zien we dat "emp" de bovenliggende tag is met "ename" en "esal" als onderliggende tags.
Code fragment:
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)
Gegevens van sociale media en websites worden doorgaans opgeslagen in JSON-formaat. Wanneer we gegevens van online servers proberen op te halen, krijgen we JSON-bestanden terug. Door Hive als datastore te gebruiken, kunnen we JSON-gegevens in Hive-tabellen laden door schema's aan te maken.
JSON naar Hive-tabel
In deze stap gaan we JSON-gegevens in Hive-tabellen laden en de waarden ophalen die in het JSON-schema zijn opgeslagen.
Stap 1) In deze stap gaan we een JSON-tabel aanmaken met de naam "json_guru". Zodra deze is aangemaakt, laden en tonen we de inhoud van het daadwerkelijke schema.
Uit de bovenstaande schermafbeelding kunnen we het volgende afleiden:
- Aanmaak van tabel “json_guru”
- Gegevens laden vanuit test.json in tabel “json_guru”
- Het daadwerkelijke schema van het JSON-bestand dat is opgeslagen in de tabel json_guru wordt weergegeven.
Stap 2) Met behulp van de get_json_object() methode kunnen we de gegevenswaarden ophalen die in de JSON-hiërarchie zijn opgeslagen.
Uit de bovenstaande schermafbeelding kunnen we het volgende afleiden:
- Met `get_json_object(str,'$.ecode')` kunnen de `ecode`-waarden uit de tabel `json_guru` worden opgehaald. Op dezelfde manier kunnen met `get_json_object(str,'$.ename')` en `get_json_object(str,'$.sal')` de `ename`- en `sal`-waarden uit de tabel `json_guru` worden opgehaald.
- Waarden die zijn opgeslagen in de JSON-hiërarchie in json_guru
Omdat get_json_object() het document slechts één keer per aanroep parseert, is json_tuple() goedkoper wanneer meerdere sleutels nodig zijn, en een JSON SerDe zet het document tijdens het laden om naar getypte kolommen.
Code snipper
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 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;
Complexe JSON naar Hive-tabel
In deze module 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 afleiden:
- Aanmaken van tabel complexjson_guru met één kolomveld van het gegevenstype string.
- Gegevens laden in complexjson_guru vanuit het complexe JSON-bestand emp.json
Stap 2) Met behulp van `get_json_object` kunnen we de daadwerkelijke inhoud ophalen die in de JSON-bestandshiërarchie is opgeslagen.
Op de volgende schermafbeelding zien we de uitvoer van de gegevens die zijn opgeslagen in complexjson_guru.
Stap 3) In deze stap kunnen we met behulp van het commando "Select" de complexe JSON-gegevens bekijken 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 realtimeprojecten: wanneer en waar te gebruiken?
Wanneer en waar Hive te gebruiken in het Hadoop-ecosysteem:
.
- Bij het werken met krachtige statistische functies binnen het Hadoop-ecosysteem
- Bij het werken met gestructureerde en semi-gestructureerde gegevensverwerking
- Als datawarehouse-tool met Hadoop
- Realtime data-invoer met HBase, waarbij Hive gebruikt kan worden.
Waar
- Voor gebruiksgemak als ETL- en datawarehouse-tool
- Het doel is om een SQL-achtige omgeving te bieden en query's uit te voeren zoals in SQL, met behulp van HiveQL.
- Het doel is om aangepaste map- en reducer-scripts te gebruiken en te implementeren voor specifieke klantvereisten.











