Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3.docx
Скачиваний:
22
Добавлен:
12.02.2024
Размер:
7.97 Mб
Скачать

6. Практика

Задача 0. Посчитать кол-во различных масок подсети.

EXPLAIN

SELECT COUNT(DISTINCT mask) AS count_mask

FROM Subnets;

Рисунок 23– Вывод плана запроса

Рисунок 24– Вывод процесса работы запроса

Рисунок 25– Статус работы запроса

Рисунок 26– Вывод работы запроса

Количество уникальных масок: 7

Задача 1. Посчитать кол-во адресов, имеющих маску 255.255.255.128.

В этой задачи видим фильтрацию, поэтому партиционирование, кот. мы сделали раньше, должно повлиять на скорость работы задачи.

Выполним запрос на таблице Subnets (без партиций) и SubnetsPart (с партициями).

SELECT COUNT(ip) AS count_subnet

FROM Subnets

WHERE mask = "255.255.255.128";

Рисунок 27– Вывод процесса работы запроса по подсчету кол-во адресов имеющих маску 255.255.255.128 в Subnets

Рисунок 28– Статус работы запроса

Рисунок 29– Вывод работы запроса в Subnets

SELECT COUNT(ip) AS count_ip_sp

FROM SubnetsPart

WHERE mask = "255.255.255.128";

Рисунок 30– Вывод процесса работы запроса по подсчету кол-во адресов имеющих маску 255.255.255.128 в SubnetsPart

Рисунок 31– Статус работы запроса

Рисунок 32– Вывод работы запроса в SubnetsPart

Проверим размер исходных данных: hdfs dfs -du -h /data/subnets/variant1

Рисунок 33– Проверим размер исходных данных

Пересоздадим таблицы Subnets и SubnetsPart на датасете /data/subnets/big (7 Gb) и повторим эксперимент. Как изменилась разница в быстродействии запросов?

Для таблицы Subnets:

USE stanishevskii_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/big';

Рисунок 33– Пересоздание таблицы Subnets

Выполним запрос:

SELECT COUNT(ip) AS new_count_adresses

FROM Subnets

WHERE mask = "255.255.255.128";

Рисунок 34– Вывод процесса работы запроса в новой таблице Subnets

Рисунок 35– Статус работы запроса

Рисунок 36– Вывод работы запроса в пересозданной Subnets

Для таблицы SubnetsPart:

SET hive.exec.dynamic.partition.mode=nonstrict;

USE stanishevskii_test;

DROP TABLE IF EXISTS SubnetsPart;

CREATE EXTERNAL TABLE SubnetsPart ( ip STRING )

PARTITIONED BY (mask STRING)

LOCATION '/data/subnets/big';

Рисунок 37– Пересоздание таблицы SubnetsPart

Повторим запрос:

SELECT COUNT(ip) AS new_count_ip_sp

FROM SubnetsPart

WHERE mask = "255.255.255.128";

Рисунок 38– Вывод процесса работы запроса в новой таблице SubnetsPart

Рисунок 39– Статус работы запроса

Рисунок 40– Вывод работы запроса в пересозданной SubnetsPart

Вывод:

Получил навыки работы с Hive.