Hive ETL: JSON, XML, tekstgegevensvoorbeelden laden

Inhoudsopgave:

Anonim

Hive als een ETL- en datawarehousing-tool bovenop het Hadoop-ecosysteem biedt functionaliteiten zoals datamodellering, datamanipulatie, gegevensverwerking en gegevensquerying. Gegevensextractie in Hive betekent het maken van tabellen in Hive en het laden van gestructureerde en semi-gestructureerde gegevens en het opvragen van gegevens op basis van de vereisten.

Voor batchverwerking gaan we op maat gedefinieerde scripts schrijven met behulp van een aangepaste kaart en het aantal scripts verminderen met behulp van een scripttaal. Het biedt een SQL-achtige omgeving en ondersteuning voor eenvoudige query's.

In deze tutorial leer je-

  • Werken met gestructureerde gegevens met Hive
  • Werken met semi-gestructureerde gegevens met behulp van Hive (XML, JSON)
  • Hive in realtime projecten - wanneer en waar te gebruiken

Werken met gestructureerde gegevens met Hive

Gestructureerde gegevens betekent dat gegevens de juiste indeling van rijen en kolommen hebben. Dit lijkt meer op 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 een tabel "workers_guru" met kolomnamen zoals Id, Naam, Leeftijd, Adres, Salaris en Afdeling van de werknemers met datatypes.

Uit de bovenstaande schermafbeelding kunnen we het volgende zien,

  1. Aanmaken van tabel "workers_guru"
  2. Gegevens laden van Employees.txt in tabel "workers_guru"

Stap 2) In deze stap geven we de inhoud weer die in deze tabel is opgeslagen met de opdracht "Selecteren". We kunnen de inhoud van de tabel bekijken in de volgende schermafbeelding.

- Voorbeeld van codefragment

Uit te voeren vragen

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 als ETL-tool te fungeren. Het kan moeilijk zijn om kaartreductie uit te voeren in sommige soorten applicaties, Hive kan de complexiteit verminderen en biedt de beste oplossing voor de IT-applicaties op het gebied van datawarehousing.

Semi-gestructureerde gegevens zoals XML en JSON kunnen met Hive met minder complexiteit worden verwerkt. Eerst zullen we zien hoe we Hive voor XML kunnen gebruiken.

XML NAAR HIVE TABEL

Hierin gaan we XML-gegevens laden in Hive-tabellen, en we zullen de waarden ophalen die zijn opgeslagen in de XML-tags.

Stap 1) Aanmaken van tabel "xmlsample_guru" met str kolom met string data type.

Uit de bovenstaande schermafbeelding kunnen we het volgende zien

  1. Aanmaken van tabel "xmlsample_guru"
  2. Gegevens laden uit de test.xml in tabel "xmlsample_guru"

Stap 2) Met behulp van de XPath () -methode kunnen we de gegevens ophalen die zijn opgeslagen in XML-tags.

Uit de bovenstaande schermafbeelding kunnen we het volgende zien

  1. Met behulp van de XPATH () -methode halen we de waarden op die zijn opgeslagen onder / emp / esal / en / emp / ename /
  2. 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 zien

  • De feitelijke XML-gegevens worden weergegeven met tags
  • Als we een enkele tag waarnemen, is deze met "emp" als bovenliggende tag met "ename" en "esal" als onderliggende tags.

Codefragment:

Uit te voeren vragen

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-objectnotatie)

Twitter- en websitegegevens worden opgeslagen in JSON-indeling. Telkens wanneer we gegevens van online servers proberen op te halen, worden JSON-bestanden geretourneerd. Door Hive als gegevensopslag te gebruiken, kunnen we JSON-gegevens in Hive-tabellen laden door schema's te maken.

JSON NAAR HIVE TABLE

Hierin gaan we JSON-gegevens laden in Hive-tabellen, en we zullen de waarden ophalen die zijn opgeslagen in het JSON-schema.

Stap 1) In deze stap gaan we de JSON-tabelnaam "json_guru" aanmaken. Eenmaal aangemaakt laden en weergeven van de inhoud van het daadwerkelijke schema.

Uit de bovenstaande schermafbeelding kunnen we het volgende zien

  1. Aanmaken van tabel "json_guru"
  2. Gegevens laden van test.json in tabel "json_guru"
  3. Het feitelijke schema van het JSON-bestand weergeven dat is opgeslagen in json_guru-tabellen

Stap 2) Met de methode get_json_object () kunnen we de gegevenswaarden ophalen die zijn opgeslagen in de JSON-hiërarchie

Uit de bovenstaande schermafbeelding kunnen we het volgende zien

  1. Met behulp van get_json_object (str, '$. Ecode) kan het ecode-waarden ophalen uit tabel json_guru. Met behulp van get_json_object (str, '$. Ename), get_json_object (str,' $. Sali) worden ename sal-waarden opgehaald uit tabel json_guru
  2. Waarden die zijn opgeslagen in de JSON-hiërarchie in json_guru

Codefragment

Uit te voeren vragen

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 TO HIVE TABLE

Hierin gaan we complexe JSON-gegevens in Hive-tabellen laden en we zullen de waarden ophalen die zijn opgeslagen in het JSON-schema

Stap 1) Complexjson_guru maken met veld met één kolom

Uit de bovenstaande schermafbeelding kunnen we het volgende zien

  1. Creatie op tabel complexjson_guru met veld met één kolom als stringgegevenstype
  2. 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.

Uit 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 het "Select" -commando feitelijk complexe JSON-gegevens zien die zijn opgeslagen in de tabel "complexjson_guru"

-Voorbeeld codefragment,

Uit te voeren vragen

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 op Hadoop Ecosystem te gebruiken:

Wanneer

  • Bij het werken met sterke en krachtige statistische functies op het Hadoop-ecosysteem
  • Bij het werken met gestructureerde en semi-gestructureerde gegevensverwerking
  • Als datawarehouse-tool bij Hadoop
  • Real-time gegevensopname met HBASE, Hive kan worden gebruikt

Waar

  • Voor eenvoudig gebruik van ETL en datawarehousing-tool
  • Om een ​​SQL-type omgeving te bieden en om te query's zoals SQL met behulp van HIVEQL
  • Om aangepaste gespecificeerde map- en reducer-scripts te gebruiken en te implementeren voor de specifieke klantvereisten