Лабораторная работа №3
.docxМинистерство цифрового развития связи и массовых коммуникаций
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
СВЯЗИ И ИНФОРМАТИКИ»
Кафедра «Математическая кибернетика и информационные технологии»
Отчёт по лабораторной работе №3
по дисциплине «Большие данные»
Выполнил: студент группы БСТ2104
Ягудин Р.Р.
Проверила: Тимофеева А.И.
Москва, 2023 г.
Цель лабораторной работы:
Получить навыки работы с Hive
Ход работы:
На рисунке 1 представлен HiveServer2 JDBC URL, находящийся в Ambari на вкладке Hive
Рисунок 1 – HiveServer2 JDBC URL
На рисунке 2 представлена команда для входа в интерфейс командной строки Hive
Рисунок 2 – Вход в интерфейс командной строки Hive
1. Запуск оболочки Hive
На рисунке 3 представлен команда для отображения списка доступных баз данных
Рисунок 3 – Список доступных баз данных
2. Создание базы данных
На рисунке 4 представлена команда для создания тестовой базы данных. При создании базы указываю полный путь к warehouse.
Рисунок 4 – Создание тестовой базы данных
На рисунке 5 представлена команда для удаления базы данных. Слово CASCADE отвечает за удаление базы вместе с её содержимым.
Рисунок 5 – Удаление базы данных
На рисунке 6 представлено повторное создание базы данных
Рисунок 6 – Повторное создание базы данных
На рисунке 7 представлена команда для вывода информации о базе данных
Рисунок 7 – Вывод информации о базе данных
3. Создание таблиц
На рисунке 8 представлена команда для выбора активной базы данных
Рисунок 8 – Выбор активной базы данных
На рисунке 9 представлена команда для удаления таблицы с именем SUBNETS из базы данных
Рисунок 9 – Удаление таблицы SUBNETS из базы данных
На рисунке 10 представлены команды для создания таблицы с именем "Subnets", которая имеет два столбца: "ip" и "mask"
Рисунок 10 – Создание таблицы с именем "Subnets" с двумя столбцами "ip" и "mask"
На рисунке 11 представлена команда для проверки создания таблицы путем вывода первых 10 строк
Рисунок 11 – Проверка создания таблицы путем вывода первых 10 строк
На рисунке 12 представлена команда для проверки списка таблиц в базе данных
Рисунок 12 – Проверка списка таблиц в базе данных
4. Партиционирование
На рисунке 13 представлена команда для установки режима выполнения динамического разделения при выполнении операций загрузки данных в таблицы Hive
Рисунок 13 – Установка режима выполнения динамического разделения
На рисунке 14 представлена команда для выбора активной базы данных
Рисунок 14 – Выбор активной базы данных
На рисунке 15 представлена команда для удаления таблицы с именем SubnetsPart из базы данных
Рисунок 15 – Удаление таблицы SubnetsPart из базы данных
На рисунке 16 представлена команда, создающая таблицу SubnetsPart с одним столбцом "ip" и разделяющая данные по столбцу "mask"
Рисунок 16 – Создание таблицы SubnetsPart
На рисунке 17 представлена команда, выполняющая операцию загрузки данных из таблицы Subnets в таблицу SubnetsPart с разделением по столбцу "mask". В результате выполнения этой операции, данные из таблицы Subnets будут перезаписаны в таблицу SubnetsPart с разделением по значению столбца "mask".
Рисунок 17 – Выполнение операции загрузки данных из таблицы Subnets в таблицу SubnetsPart с разделением по столбцу "mask"
На рисунке 18 представлена трансляция запроса в MapReduce-задачу
Рисунок 18 – Трансляция запроса в MapReduce-задачу
На рисунке 19 представлена команда для проверки получившихся партиций
Рисунок 19 – Проверки получившихся партиций
На рисунке 20 представлена команда для получения полной информации о свойствах таблицы SubnetsPart, на рисунке 21 представлен результат её выполнения
Рисунок 20 – Получение полной информации о свойствах таблицы SubnetsPart
Рисунок 21 – Информация о таблице SubnetsPart
Опишем смысл полей из col_name:
Col_name - информация о столбце ip, тип строка (string)
Partition Information - данные о партициях таблицы указывают на наличие разделения данных по значениям в колонке mask.
Detailed Table Information - в данном разделе представлена общая информация о таблице, включая информацию о её создании, владельце, последнем доступе, расположении, параметрах хранения данных и других свойствах.
Storage Information - в данном разделе представлена информация о различных методах, которые используются для хранения данных. Здесь находится информация о библиотеке сериализации/десериализации Serge, форматах ввода и вывода, параметрах сжатия и способах хранения данных.
5. Парсинг входных данных с помощью регулярных выражений
На рисунке 22 представлена команда для выбора активной базы данных
Рисунок 22 – Выбор активной базы данных
На рисунке 23 представлена команда для создания таблицы SerDeExample, которая использует специальный сериализатор/десериализатор (SerDe) для обработки данных, которые хранятся в формате текстовых файлов и имеют определенный формат. Эти данные ожидаются в текстовых файлах, которые находятся по указанному пути.
Рисунок 23 – Создание таблицы SerDeExample для обработки данных
На рисунке 24 представлена команда для создания запроса, который будет выбирать первые 10 строк из таблицы SerDeExample и отображать их в результатах запроса
Рисунок 24 – Создание запроса, отображающий первые 10 строк из таблицы SerDeExample
На рисунке 25 представлен процесс создания таблицы SerDeExample с определенными настройками
Рисунок 25 – Процесс создания таблицы SerDeExample с определенными настройками
На рисунке 26 представлена команда для создания новой таблицы с новым парсингом и вывод таблицы
Рисунок 26 – Создание новой таблицы с новым парсингом и вывод таблицы
На рисунке 27 представлен процесс дописанного регулярного выражение. Добавим его в запрос и выполним, чтоб убедиться, что данные распарсились правильно
Рисунок 27 – Создание новой таблицы с дописанным регулярным выражением и вывод новой таблицы
На рисунке 28 представлена команда для вывода информации таблицы SerDeExample
Рисунок 28 – Вывод информации таблицы SerDeExample
6. Практика
Задача 0. Посчитать кол-во различных масок подсети.
На рисунке 29 представлен процесс, который будет анализировать запрос для подсчета уникальных значений в столбце "mask" таблицы "SubnetsPart". План выполнения запроса будет включать этапы, такие как сканирование данных, вычисление уникальных значений и подсчет.
Рисунок 29 – Вывод плана запроса
На рисунке 30 представлен процесс работы запроса
Рисунок 30– Процесс работы запроса
На рисунке 31 представлен вывод работы запроса
Рисунок 31 – Вывод работы запроса
Задача 1. Посчитать кол-во адресов, имеющих маску 255.255.255.128.
На рисунке 32 представлена команда для запуска процесса работы запроса
на таблице Subnets (без партиций)
Рисунок 32– Запуск процесса работы запроса
На рисунке 33 представлен вывод работы запроса
Рисунок 33 – Вывод работы запроса
На рисунке 34 представлен вывод работы запроса в Subnets
Рисунок 34– Вывод работы запроса на таблице Subnets
На рисунке 35 представлена команда для запуска процесса работы запроса на таблице SubnetsPart (с партициями)
Рисунок 35– Запуск процесса работы запроса
На рисунке 36 представлен вывод работы запроса
Рисунок 36 – Вывод работы запроса
На рисунке 37 представлен вывод работы запроса в SubnetsPart
Рисунок 37– Вывод работы запроса на таблице SubnetsPart
Вывод: Разница в быстродействии составляет 0,385 сек.
На рисунке 38 представлена команда для проверки размера исходных данных
Рисунок 38– Проверка размера исходных данных
На рисунке 39 представлен процесс, в результате которого в базе данных yagud1n_test будет создана таблица с именем Subnets, которая ожидает данные в формате текстовых файлов, разделенных табуляцией, по указанному пути '/data/subnets/big'.
Рисунок 39 – Процесс создания таблицы с именем Subnets в базе данных yagud1n_test
Пересоздадим таблицы Subnets и SubnetsPart на датасете /data/subnets/big (7 Gb) и повторим эксперимент. Как изменилась разница в быстродействии запросов?
Рисунок 40– Процесс выполнение файла 7 Gb без партиций командой SELECT COUNT(*) AS address_count FROM Subnets WHERE mask = '255.255.255.128';
Рисунок 41 – Процесс выполнение файла 7 Gb с партициями командой SELECT COUNT(*) AS address_count FROM SubnetsPart WHERE mask = '255.255.255.128';
Разница в быстродействии составляет 8,763 сек.
Вывод:
В результате выполнения данной лабораторной работы были получены навыки работы с Hive.
