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.