Учебники

12) Извлечение данных с помощью Hive

Hive как инструмент ETL и хранилища данных на вершине экосистемы Hadoop предоставляет такие функции, как моделирование данных, манипулирование данными, обработка данных и запросы данных. Извлечение данных в Hive означает создание таблиц в Hive и загрузку структурированных и полуструктурированных данных, а также запрос данных на основе требований.

Для пакетной обработки мы собираемся написать пользовательские сценарии, используя пользовательскую карту, и сократить количество сценариев, используя язык сценариев. Он обеспечивает среду, похожую на SQL, и поддерживает простые запросы.

В этом уроке вы узнаете

Работа со структурированными данными с использованием Hive

Структурированные данные означают, что данные имеют правильный формат строк и столбцов. Это больше похоже на данные СУБД с правильными строками и столбцами.

Здесь мы собираемся загрузить структурированные данные, присутствующие в текстовых файлах в Hive.

Шаг 1) На этом шаге мы создаем таблицу «employee_guru» с именами столбцов, такими как Id, Имя, Возраст, Адрес, Зарплата и Отдел сотрудников с типами данных.

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее:

  1. Создание таблицы «employee_guru»
  2. Загрузка данных из Employees.txt в таблицу «employee_guru»

Шаг 2) На этом шаге мы отображаем содержимое, сохраненное в этой таблице, с помощью команды «Выбрать». Мы можем наблюдать за содержанием таблицы на следующем снимке экрана.

Извлечение данных с помощью 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. В некоторых типах приложений может быть сложно выполнить уменьшение карты, Hive может уменьшить сложность и обеспечивает лучшее решение для ИТ-приложений с точки зрения сектора хранилищ данных.

Полуструктурированные данные, такие как XML и JSON, можно обрабатывать с меньшей сложностью с помощью Hive. Сначала мы увидим, как мы можем использовать Hive для XML.

XML TO HIVE TABLE

В этом мы собираемся загрузить данные XML в таблицы Hive и извлекать значения, хранящиеся в тегах XML.

Шаг 1) Создание таблицы «xmlsample_guru» со столбцом str со строковым типом данных.

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее

  1. Создание таблицы «xmlsample_guru»
  2. Загрузка данных из test.xml в таблицу «xmlsample_guru»

Шаг 2) Используя метод XPath (), мы сможем извлечь данные, хранящиеся в тегах XML.

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее

  1. Используя метод XPATH (), мы выбираем значения, хранящиеся в / emp / esal / и / emp / ename /
  2. Значения присутствуют внутри тегов XML. На этом этапе мы отображаем фактические значения, хранящиеся под тегами XML в таблице «xmlsample_guru»

Шаг 3) На этом шаге мы извлечем и отобразим необработанный XML таблицы «xmlsample_guru».

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее

  • Фактические данные 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». После того, как создана загрузка и отображение содержимого актуальной схемы.

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее

  1. Создание таблицы «json_guru»
  2. Загрузка данных из test.json в таблицу «json_guru»
  3. Отображение фактической схемы файла JSON, хранящегося в таблицах json_guru

Шаг 2) Используя метод get_json_object (), мы можем получить значения данных, хранящиеся в иерархии JSON.

Извлечение данных с помощью Hive

Из приведенного выше снимка экрана мы можем наблюдать следующее

  1. Используя get_json_object (str, ‘$. Ecode) он может получить значения ecode из таблицы json_guru. Аналогично, используя get_json_object (str, ‘$. Ename), get_json_object (str,’ $. Sali), он будет извлекать значения sal из ename из таблицы json_guru
  2. Значения, хранящиеся внутри 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 с одним полем столбца

Извлечение данных с помощью Hive

На приведенном выше снимке экрана мы можем наблюдать следующее

  1. Создание в таблице complexjson_guru с полем из одного столбца в качестве строкового типа данных
  2. Загрузка данных в complexjson_guru из комплексного файла JSON emp.json

Шаг 2) Используя get_json_object, мы можем получить фактический контент, который хранится в файловой иерархии JSON.

На следующем снимке экрана мы можем видеть вывод данных, хранящихся в complexjson_guru.

Извлечение данных с помощью Hive

Шаг 3) На этом шаге с помощью команды «Выбрать» мы фактически можем увидеть сложные данные JSON, хранящиеся в таблице «complexjson_guru»

Извлечение данных с помощью Hive

Пример кода,

Запросы для выполнения

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
  • Для использования и развертывания указанных пользовательских сценариев карты и редуктора для конкретных требований клиента