
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Математическая кибернетика и информационные технологии»
Дисциплина «Большие данные»
Практическая работа №3
Москва, 2024
Оглавление
1 Цель Работы 3
2 Ход выполнения работы 3
3 Вывод 32
1 Цель Работы
Получить навыки работы с Hive.
2 Ход выполнения работы
Скопируем адрес HiveServer2 JDBC URL и на ноде, на которой мы будем работать, введем следующую команду: beeline -u "HiveServer2 JDBC URL" для подключения к Hive (рисунок 1).
Рисунок 1 – Подключение к Hive
1. Запуск оболочки Hive
Выполним команду SHOW DATABASES, которая показывает список существующих баз данных Hive (рисунок 2).
Рисунок 2 – Запуск команды SHOW DATABASES
2. Создание базы данных
Создадим тестовую БД. Для этого используем команду: hive> create database smirnov_test location '/user/smirnov/test_warehouse'; При создании базы нужно будет указать полный путь к warehouse (рисунок 3).
Рисунок 3 – Запуск команды CREATE DATABASE
Проверим, создалась ли у нас БД. Используем команду SHOW DATABASES для этого (рисунок 4).
Рисунок 4 – Запуск команды SHOW DATABASES для проверки команды CREATE DATABASE
Чтобы удалить базу вводим команду: hive> drop database if exists smirnov_test cascade; Слово CASCADE отвечает за удаление базы вместе с её содержимым. Используем команду SHOW DATABASES, чтобы посмотреть, удалилась ли БД (рисунок 5)
Рисунок 5 – Запуск команды DROP DATABASE и проверка на удаление через команду SHOW DATABASES
Создадим базу повторно, а также выведем информации о БД, используя команду: hive> DESCRIBE DATABASE smirnov_test (рисунок 6 - 7).
Рисунок 6 – Запуск команды SHOW DATABASES для проверки команды CREATE DATABASE
Рисунок 7 – Запуск команды DESCRIBE DATABASE
3. Создание таблиц
Создадим таблицу в тестовой базе. Для исходных данных используем датасет "Подсети" (/data/subnets/variant1): * IP-адрес, * маска подсети, в которой он находится. Нужно ввести следующие команды:
USE smirnov_test;
DROP TABLE IF EXISTS Subnets;
CREATE EXTERNAL TABLE Subnets (ip STRING, mask STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/data/subnets/variant1';
1. USE - подключение к базе данных. Без этой строки таблицы будут создаваться в базе "default".
2. EXTERNAL - существует 2 типа таблиц: managed и external. External-таблицы работают с внешними данными не изменяя их, а managed позволяют их изменять.
3. STORED AS здесь выбирается формат хранения таблицы. Для External-таблиц формат должен совпадать с форматом хранения данных. Для managed рекомендуется использовать сжатые форматы хранения (RCFile, AVRO и т.д.).
Рисунок 8 – Запуск команд для создания таблиц в тестовой базе
Проверим, как создалась таблица (выведем первые 10 строк), используя команду: SELECT * FROM Subnets LIMIT 10. Проверим список таблиц в базе с помощью команды: SHOW TABLES
Рисунок 9 – Запуск команды SELECT * FROM Subnets LIMIT 10 и SHOW TABLES для проверки
4. Партиционирование
Создадим партиционированную таблицу из таблицы Subnets. Информация о каждой партиции хранится в отдельной HDFS-директории внутри metastore.
SET hive. exec. dynamic. partition. Mode=nonstrict;
USE smirnov_test;
DROP TABLE IF EXISTS SubnetsPart;
CREATE EXTERNAL TABLE SubnetsPart (ip STRING)
PARTITIONED BY (mask STRING)
STORED AS TEXTFILE;
INSERT OVERWRITE TABLE SubnetsPart PARTITION (mask)
SELECT * FROM Subnets;
Рисунок 10 – Запуск команд для создания партиционированной таблицы
Уже здесь можно увидеть,
что запрос транслируется в MapReduce-задачу.
Чтобы убедиться в этом, можно зайти на
ApplicationMaster UI (рисунок 11).
Рисунок 11 – Запуск команд для создания партиционированной таблицы
Рисунок 12 – Вывод команд для создания партиционированной таблицы
Рисунок 13 – Вывод команд для создания партиционированной таблицы
Рисунок 14 – Вывод команд для создания партиционированной таблицы
Проверим получившиеся партиции через команду SHOW PARTITIONS SubnetsPart.
Рисунок 15 – Запуск команд для проверки получившихся партиций
С помощью команды: Describe formatted SubnetsPart можно получить полную информацию о свойствах таблицы. Выведем информацию о таблице SubnetsPart (рисунок 16 - 17).
Рисунок 16 – Запуск команды Describe formatted
Рисунок 17 – Запуск команды Describe formatted
Опишем смысл полей из col_name:
Col name - информация о столбце ip (string)
Partition Information - информация о партициях таблицы. Этот раздел указывает, что у таблицы есть партиции, и в данном случае, колонка mask используется для партиционирования. Таким образом, данные будут разделены по значениям в колонке mask.
Detailed Table Information - общая информация о таблице. Здесь представлена информация об общей информации о таблице: создание таблицы, владельце таблицы, время последнего доступа, расположение таблицы, параметры хранения данных и другие свойства.
Storage Information - информация о способах хранения данных. Здесь представлена информация о хранении данных, такую как библиотека сериализации/десериализации (Serge), формат ввода и вывода, параметры сжатия и параметры хранения данных.