Hive ETL: Зареждане на JSON, XML, Примери за текстови данни
⚡ Умно обобщение
Hive ETL превръща текстови, XML и JSON файлове в таблици, в които могат да се правят заявки, като ги зарежда в Hive и ex.tracобработка на стойности с xpath() и get_json_object(), предоставяйки на анализаторите SQL интерфейс върху полуструктурирани Hadoop данни.
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 в таблицата „employees_guru“
Стъпка 2) В тази стъпка показваме съдържанието, съхранено в тази таблица, като използваме командата „Select“. Можем да видим съдържанието на таблицата на следната екранна снимка.
Примерен фрагмент от код
Запитвания за изпълнение
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 в таблицата „xmlsample_guru“
Стъпка 2) Използване на XPath Чрез метода xpath() ще можем да извлечем данните, съхранени в XML тагове.
От горната екранна снимка можем да наблюдаваме следното:
- Използвайки метода xpath(), извличаме стойностите, съхранени в /emp/esal/ и /emp/ename/.
- Стойности, присъстващи в XML тагове. В тази стъпка показваме действителните стойности, съхранени под XML тагове в таблицата „xmlsample_guru“.
Обърнете внимание, че xpath() връща масив от низове; xpath_string(), xpath_int() и xpath_double() връщат единична типизирана стойност.
Стъпка 3) В тази стъпка ще извлечем и покажем суровия XML файл на таблицата „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_guru“
- Показване на действителната схема на JSON файла, съхранен в таблицата json_guru
Стъпка 2) Използвайки метода get_json_object(), можем да извлечем стойностите на данните, съхранени в JSON йерархията.
От горната екранна снимка можем да наблюдаваме следното:
- Използвайки get_json_object(str,'$.ecode'), може да се извлекат ecode стойности от таблицата json_guru. По подобен начин, използвайки get_json_object(str,'$.ename') и get_json_object(str,'$.sal'), ще се извлекат стойностите на ename и sal от таблицата json_guru.
- Стойности, съхранени в 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 с едно поле от тип низ
- Зареждане на данни в complexjson_guru от emp.json complex JSON файла
Стъпка 2) Чрез използването на get_json_object можем да извлечем действителното съдържание, което се съхранява в йерархията на JSON файловете.
От следващата екранна снимка можем да видим резултата от данните, съхранени в complexjson_guru.
Стъпка 3) В тази стъпка, използвайки командата „Select“, можем да видим сложните 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 за специфични изисквания на клиента











