Hive ETL: Зареждане на JSON, XML, Примери за текстови данни

⚡ Умно обобщение

Hive ETL превръща текстови, XML и JSON файлове в таблици, в които могат да се правят заявки, като ги зарежда в Hive и ex.tracобработка на стойности с xpath() и get_json_object(), предоставяйки на анализаторите SQL интерфейс върху полуструктурирани Hadoop данни.

  • 🧱 Структурирани товари: Текстов файл с разделители се превръща в таблица с ROW FORMAT DELIMITED плюс FIELDS TERMINATED BY, след което LOAD DATA LOCAL INPATH.
  • ???? ️ XML примерtracТА: Единична колона STRING съдържа всеки XML документ, а xpath() извлича стойности от именуваните тагове.
  • 🔑 JSON extracТА: get_json_object() чете по един JSONPath израз на извикване, така че всяко поле се нуждае от собствено извикване.
  • 🪜 Вложени полезни товари: Сложният JSON се зарежда по абсолютно същия начин, а йерархията се обхожда с помощта на точкови JSONPath изрази.
  • 📍 Правила на пътя: Ключовата дума LOCAL чете от файловата система на Linux, а пропускането ѝ разрешава пътя в HDFS.
  • 🎯 Където е подходящо: Hive е по-подходящ за пакетно складиране и полуструктуриран ETL, отколкото за търсене на записи с ниска латентност.

Hive ETL: Зареждане на JSON, XML и текстови данни

Hive като ETL и инструмент за съхранение на данни върху Hadoop екосистемата предоставя функционалности като моделиране на данни, манипулиране на данни, обработка на данни и заявки към данни. Data extrac„Управление“ в Hive означава създаване на таблици в Hive и зареждане на структурирани и полуструктурирани данни, както и заявки към данни въз основа на изискванията.

За пакетна обработка ще напишем персонализирани скриптове, използвайки персонализирани map и reduce скриптове на скриптов език. Той предоставя SQL като среда и поддръжка за лесно търсене.

Работа със структурирани данни с помощта на Hive

Структурираните данни означават, че данните са в правилния формат на редове и колони. Това е по-скоро като RDBMS данни с правилни редове и колони.

Тук ще заредим структурирани данни, налични в текстови файлове в Hive.

Стъпка 1) В тази стъпка създаваме таблица „employees_guru“ с имена на колони като Id, Name, Age, Address, Salary и Department на служителите с типове данни.

Създаване на таблицата employees_guru и зареждане на Employees.txt в Hive

От горната екранна снимка можем да наблюдаваме следното:

  1. Създаване на таблица “employees_guru”
  2. Зареждане на данни от Employees.txt в таблицата „employees_guru“

Стъпка 2) В тази стъпка показваме съдържанието, съхранено в тази таблица, като използваме командата „Select“. Можем да видим съдържанието на таблицата на следната екранна снимка.

Избор на изход от заявка, показващ редове от таблицата employees_guru Hive

Примерен фрагмент от код

Запитвания за изпълнение

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;

Работа с полуструктурирани данни с помощта на Hive (XML, JSON)

Hive изпълнява ETL функционалности в екосистемата Hadoop, като действа като ETL инструментИзпълнението на MapReduce може да е трудно в някои видове приложения; Hive може да намали тази сложност и предоставя най-доброто решение за ИТ приложения по отношение на сектора за складиране на данни.

Полуструктурирани данни като XML и JSON могат да се обработват с по-малка сложност с помощта на Hive. Първо ще видим как можем да използваме Hive за XML.

XML към таблица от кошери

В това ще заредим XML данни в Hive таблици и ще извлечем стойностите, съхранени в XML таговете.

Стъпка 1) Създаване на таблица „xmlsample_guru“ с колона тип str от тип данни тип string.

Създаване на таблицата xmlsample_guru и зареждане на test.xml в Hive

От горната екранна снимка можем да наблюдаваме следното:

  1. Създаване на таблица “xmlsample_guru”
  2. Зареждане на данни от test.xml в таблицата „xmlsample_guru“

Стъпка 2) Използване на XPath Чрез метода xpath() ще можем да извлечем данните, съхранени в XML тагове.

xpath() заявка, връщаща стойности на ename и esal от XML колоната

От горната екранна снимка можем да наблюдаваме следното:

  1. Използвайки метода xpath(), извличаме стойностите, съхранени в /emp/esal/ и /emp/ename/.
  2. Стойности, присъстващи в XML тагове. В тази стъпка показваме действителните стойности, съхранени под XML тагове в таблицата „xmlsample_guru“.

Обърнете внимание, че xpath() връща масив от низове; xpath_string(), xpath_int() и xpath_double() връщат единична типизирана стойност.

Стъпка 3) В тази стъпка ще извлечем и покажем суровия XML файл на таблицата „xmlsample_guru“.

Сурови XML документи, съхранявани в колоната str на xmlsample_guru

От горната екранна снимка можем да наблюдаваме следното:

  • Действителните XML данни, показвани с тагове
  • Ако наблюдаваме единичен етикет, той е с „emp“ като родителски етикет и „ename“ и „esal“ като дъщерни етикети.

Code откъс:

Запитвания за изпълнение

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 (JavaНотация на обект на скрипт)

Данните от социалните медии и уебсайтовете обикновено се съхраняват във формат JSON. Всеки път, когато се опитаме да извлечем данни от онлайн сървъри, те ще върнат JSON файлове. Използвайки Hive като хранилище за данни, можем да заредим JSON данни в таблици на Hive, като създадем схеми.

JSON към таблица от кошери

В това ще заредим JSON данни в таблици на Hive и ще извлечем стойностите, съхранени в JSON схемата.

Стъпка 1) В тази стъпка ще създадем JSON таблица с име „json_guru“. След като бъде създадена, ще заредим и покажем съдържанието на действителната схема.

Създаване на json_guru, зареждане на test.json и показване на JSON схемата

От горната екранна снимка можем да наблюдаваме следното:

  1. Създаване на таблица „json_guru“
  2. Зареждане на данни от test.json в таблицата „json_guru“
  3. Показване на действителната схема на JSON файла, съхранен в таблицата json_guru

Стъпка 2) Използвайки метода get_json_object(), можем да извлечем стойностите на данните, съхранени в JSON йерархията.

get_json_object() извежда списък с ecode, ename и salary от json_guru

От горната екранна снимка можем да наблюдаваме следното:

  1. Използвайки get_json_object(str,'$.ecode'), може да се извлекат ecode стойности от таблицата json_guru. По подобен начин, използвайки get_json_object(str,'$.ename') и get_json_object(str,'$.sal'), ще се извлекат стойностите на ename и sal от таблицата json_guru.
  2. Стойности, съхранени в JSON йерархията в json_guru

Тъй като get_json_object() анализира документа веднъж на извикване, json_tuple() е по-евтин, когато са необходими няколко ключа, а JSON SerDe картографира документа върху типизирани колони по време на зареждане.

Code отрязък

Запитвания за изпълнение

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;

Сложна JSON към Hive таблица

В това ще заредим сложни JSON данни в таблици на Hive и ще извлечем стойностите, съхранени в JSON схемата.

Стъпка 1) Създаване на complexjson_guru с поле с една колона.

Създаване на complexjson_guru и зареждане на emp.json в таблицата Hive

От горната екранна снимка можем да наблюдаваме следното:

  1. Създаване на таблица complexjson_guru с едно поле от тип низ
  2. Зареждане на данни в complexjson_guru от emp.json complex JSON файла

Стъпка 2) Чрез използването на get_json_object можем да извлечем действителното съдържание, което се съхранява в йерархията на JSON файловете.

От следващата екранна снимка можем да видим резултата от данните, съхранени в complexjson_guru.

Extracted ecode и вложени ключови стойности от сложния JSON документ

Стъпка 3) В тази стъпка, използвайки командата „Select“, можем да видим сложните JSON данни, съхранени в таблицата „complexjson_guru“.

Изберете изход, показващ сурови сложни JSON редове в complexjson_guru

Примерен фрагмент от код

Запитвания за изпълнение

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 в проекти в реално време – кога и къде да се използва

Кога и къде да използвате Hive в екосистемата Hadoop:

Кога

  • При работа със силни и мощни статистически функции в екосистемата на Hadoop
  • При работа със структурирана и полуструктурирана обработка на данни
  • Като инструмент за хранилище на данни с Hadoop
  • Приемане на данни в реално време с HBase, където може да се използва Hive

Къде

  • За лесно използване като ETL и инструмент за съхранение на данни
  • Да се ​​осигури среда от тип SQL и да се правят заявки като SQL, използвайки HiveQL
  • Да използвате и внедрявате персонализирани скриптове за map и reducer за специфични изисквания на клиента

Въпроси и Отговори

LOCAL копира файла от файловата система на клиентската машина. Без LOCAL, Hive третира пътя като HDFS и премества файла, така че относителният път се разрешава под домашния HDFS на потребителя.

json_tuple() обикновено е по-бърз: той анализира документа веднъж и връща няколко ключа заедно, докато get_json_object() анализира повторно низа за всяко поле. Използвайте get_json_object() за единична стойност.

Не. Една единствена колона STRING плюс JSON функциите работят. SerDe като org.apache.hive.hcatalog.data.JsonSerDe е подходящ за повтарящи се производствени заявки, mapping ключове върху въведени колони веднъж, вместо при всяко четене.

Обикновено е файл с красив печат: Hive очаква един пълен JSON документ на ред, така че документ, разделен на редове, става невалиден ред. Грешно изписан ключ или неправилно изписване на главни и малки букви в JSONPath прави същото.

xpath() винаги връща масив от низове. Използвайте типов вариант: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() или xpath_boolean(). Всеки връща един скалар от този тип.

Външното е по-безопасно за суровите данни за кацане, защото капкатаping Таблицата оставя файловете на мястото си. Управляваната таблица изтрива директорията си с данни при DROP — удобно за временни таблици, но разрушително за споделени файлове.

Инструментите за машинно обучение профилират примерни файлове, за да извеждат типове, да маркират разредени ключове и да предлагат колони на дялове от шаблони на заявки. Третирайте резултата като чернова — типовете и дяловете все още се нуждаят от проверка спрямо реални обеми.

Той създава CREATE TABLE оператори, LOAD DATA команди и JSONPath изрази от примерен запис, поставен в редактора. Не може да види клъстера, така че имената, пътищата и правописа на ключовите думи трябва първо да бъдат проверени.

Обобщете тази публикация с: