Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_Лабораторная_работа_3_БСТ2104_Мажукин_И_Н.docx
Скачиваний:
38
Добавлен:
12.02.2024
Размер:
17.57 Mб
Скачать

6. Практика

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

EXPLAIN

SELECT COUNT(DISTINCT mask) AS count_mask

FROM Subnets;

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

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

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

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

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

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

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

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

SELECT COUNT(ip) AS count_subnet

FROM Subnets

WHERE mask = "255.255.255.128";

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

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

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

SELECT COUNT(ip) AS cnt_ip_sp

FROM SubnetsPart

WHERE mask = "255.255.255.128";

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

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

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

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

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

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

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

USE mazhukin_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';

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

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

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

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

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

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

USE mazhukin_test;

DROP TABLE IF EXISTS SubnetsPart;

CREATE EXTERNAL TABLE SubnetsPart ( ip STRING, mask STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE

LOCATION '/data/subnets/big';

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

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

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

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

Задача со звёздочкой

Посчитать среднее кол-во адресов по подсетям.

Выполним команду

SELECT mask, AVG(addres_count) AS avg_addr_cnt

FROM (SELECT mask, COUNT(*) AS addres_count

FROM Subnets

GROUP BY mask) subquery

GROUP BY mask;

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

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

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

Вывод:

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