Hive ETL: завантаження JSON, XML, приклади текстових даних
⚡ Розумний підсумок
Hive ETL перетворює текстові, XML та JSON-файли на таблиці, до яких можна запитувати, завантажуючи їх у Hive та ex.tracобробляючи значення за допомогою xpath() та get_json_object(), надаючи аналітикам SQL-інтерфейс для роботи з напівструктурованими даними Hadoop.
Hive як інструмент ETL та сховища даних поверх Hadoop екосистема надає такі функції, як моделювання даних, маніпулювання даними, обробка даних та запити даних. Data extracПід цим підходом розуміється створення таблиць у Hive та завантаження структурованих і напівструктурованих даних, а також запит даних відповідно до вимог.
Для пакетної обробки ми збираємося написати власні скрипти, використовуючи власні скрипти map та reduce мовою сценаріїв. Це забезпечує SQL як середовище та підтримка для легкого запиту.
Робота зі структурованими даними за допомогою Hive
Структуровані дані означають, що дані мають правильний формат рядків і стовпців. Це більше схоже на СУБД дані з відповідними рядками та стовпцями.
Тут ми завантажимо структуровані дані, що містяться в текстових файлах Hive.
Крок 1) На цьому кроці ми створюємо таблицю «employees_guru» з такими назвами стовпців, як Id, Name, Age, Address, Salary та Department, із типами даних співробітників.
З наведеного вище скріншоту ми можемо спостерігати наступне:
- Створення таблиці “employees_guru”
- Завантаження даних з Employees.txt у таблицю “employees_guru”
Крок 2) На цьому кроці ми відображаємо вміст, що зберігається в цій таблиці, за допомогою команди «Вибрати». Ми можемо спостерігати вміст таблиці на наступному знімку екрана.
Зразок фрагмента коду
Запити для виконання
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 рядкового типу.
З наведеного вище скріншоту ми можемо спостерігати наступне:
- Створення таблиці “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 до таблиці Hive
У цьому випадку ми завантажимо дані 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 для конкретних вимог клієнта











