Hive как инструмент ETL и хранилища данных на вершине экосистемы Hadoop предоставляет такие функции, как моделирование данных, манипулирование данными, обработка данных и запросы данных. Извлечение данных в Hive означает создание таблиц в Hive и загрузку структурированных и полуструктурированных данных, а также запрос данных на основе требований.
Для пакетной обработки мы собираемся написать пользовательские сценарии, используя пользовательскую карту, и сократить количество сценариев, используя язык сценариев. Он обеспечивает среду, похожую на SQL, и поддерживает простые запросы.
В этом уроке вы узнаете
- Работа со структурированными данными с использованием Hive
- Работа с полуструктурированными данными с использованием Hive (XML, JSON)
- Hive в проектах в реальном времени — когда и где использовать
Работа со структурированными данными с использованием Hive
Структурированные данные означают, что данные имеют правильный формат строк и столбцов. Это больше похоже на данные СУБД с правильными строками и столбцами.
Здесь мы собираемся загрузить структурированные данные, присутствующие в текстовых файлах в Hive.
Шаг 1) На этом шаге мы создаем таблицу «employee_guru» с именами столбцов, такими как Id, Имя, Возраст, Адрес, Зарплата и Отдел сотрудников с типами данных.
На приведенном выше снимке экрана мы можем наблюдать следующее:
- Создание таблицы «employee_guru»
- Загрузка данных из Employees.txt в таблицу «employee_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. В некоторых типах приложений может быть сложно выполнить уменьшение карты, Hive может уменьшить сложность и обеспечивает лучшее решение для ИТ-приложений с точки зрения сектора хранилищ данных.
Полуструктурированные данные, такие как XML и JSON, можно обрабатывать с меньшей сложностью с помощью Hive. Сначала мы увидим, как мы можем использовать Hive для XML.
XML TO HIVE TABLE
В этом мы собираемся загрузить данные XML в таблицы Hive и извлекать значения, хранящиеся в тегах XML.
Шаг 1) Создание таблицы «xmlsample_guru» со столбцом str со строковым типом данных.
На приведенном выше снимке экрана мы можем наблюдать следующее
- Создание таблицы «xmlsample_guru»
- Загрузка данных из test.xml в таблицу «xmlsample_guru»
Шаг 2) Используя метод XPath (), мы сможем извлечь данные, хранящиеся в тегах XML.
На приведенном выше снимке экрана мы можем наблюдать следующее
- Используя метод XPATH (), мы выбираем значения, хранящиеся в / emp / esal / и / emp / ename /
- Значения присутствуют внутри тегов XML. На этом этапе мы отображаем фактические значения, хранящиеся под тегами XML в таблице «xmlsample_guru»
Шаг 3) На этом шаге мы извлечем и отобразим необработанный XML таблицы «xmlsample_guru».
На приведенном выше снимке экрана мы можем наблюдать следующее
- Фактические данные XML отображаются с тегами
- Если мы наблюдаем один тег, то это с «emp» в качестве родительского тега с «ename» и «esal» в качестве дочерних тегов.
Фрагмент кода:
Запросы для выполнения
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)
Данные Twitter и веб-сайтов хранятся в формате JSON. Всякий раз, когда мы пытаемся получить данные с онлайн-серверов, он возвращает файлы JSON. Используя Hive в качестве хранилища данных, мы можем загружать данные JSON в таблицы Hive, создавая схемы.
JSON TO HIVE TABLE
В этом случае мы собираемся загрузить данные 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,’ $. Sali), он будет извлекать значения sal из ename из таблицы json_guru
- Значения, хранящиеся внутри JSON Hierarchy в json_guru
Фрагмент кода
Запросы для выполнения
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;
Комплекс JSON TO HIVE TABLE
В этом случае мы собираемся загрузить данные Complex JSON в таблицы Hive и извлечем значения, хранящиеся в схеме JSON.
Шаг 1) Создание complexjson_guru с одним полем столбца
На приведенном выше снимке экрана мы можем наблюдать следующее
- Создание в таблице complexjson_guru с полем из одного столбца в качестве строкового типа данных
- Загрузка данных в complexjson_guru из комплексного файла JSON emp.json
Шаг 2) Используя get_json_object, мы можем получить фактический контент, который хранится в файловой иерархии JSON.
На следующем снимке экрана мы можем видеть вывод данных, хранящихся в complexjson_guru.
Шаг 3) На этом шаге с помощью команды «Выбрать» мы фактически можем увидеть сложные данные 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
- Для использования и развертывания указанных пользовательских сценариев карты и редуктора для конкретных требований клиента