Hive ETL: загрузка JSON, XML, примеров текстовых данных

Содержание:

Anonim

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

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

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

  • Работа со структурированными данными с помощью Hive
  • Работа с полуструктурированными данными с использованием Hive (XML, JSON)
  • Проекты Hive в реальном времени - когда и где использовать

Работа со структурированными данными с помощью Hive

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

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

Шаг 1) На этом шаге мы создаем таблицу «employee_guru» с именами столбцов, такими как Id, Name, Age, Address, Salary и Department, сотрудников с типами данных.

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

  1. Создание таблицы «employee_guru»
  2. Загрузка данных из 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

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

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

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

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

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

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

  1. Используя метод XPATH (), мы получаем значения, хранящиеся в / emp / esal / и / emp / ename /
  2. Значения присутствуют внутри тегов 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

Здесь мы собираемся загрузить данные JSON в таблицы Hive и получить значения, хранящиеся в схеме JSON.

Шаг 1) На этом шаге мы собираемся создать таблицу JSON с именем «json_guru». После создания загрузка и отображение содержимого фактической схемы.

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

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

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

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

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

Здесь мы собираемся загрузить сложные данные JSON в таблицы Hive и получить значения, хранящиеся в схеме JSON.

Шаг 1) Создание complexjson_guru с одним полем столбца

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

  1. Создание в таблице complexjson_guru с полем одного столбца в качестве строкового типа данных
  2. Загрузка данных в 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
  • Для использования и развертывания настраиваемых сценариев карты и редуктора для конкретных требований клиента.