Введение
В далеком будущем человечество расширяет свои границы в огромном космосе. Агенство по управлению межзвездными космодромами (Interstellar Spaceport Authority, ISA) отвечает за управление сложной сетью космодромов, рассеянных по всему галактике. Как Верховный Командир ISA, ваша миссия — оптимизировать операции космодрома, используя мощь функций партиционирования и квазиранжирования Hadoop.
Дата-центр космодрома хранит огромное количество информации, включая протоколы полетов, грузовые манифесты и записи о пассажирах. Эффективное управление данными является важнейшим для обеспечения бесперебойной работы и принятия обоснованных решений. Ваша цель — реализовать стратегии партиционирования и квазиранжирования для повышения производительности запросов и организации данных в экосистеме Hadoop.
Создать партиционированную таблицу
В этом шаге вы создадите партиционированную таблицу для хранения данных о протоколах полетов, что поможет повысить производительность запросов и обеспечить эффективное управление данными.
Во - первых, убедитесь, что вы вошли под пользователем hadoop, выполнив следующую команду в терминале:
su - hadoop
Затем запустите Hive - оболочку, выполнив следующую команду:
hive
Теперь создайте базу данных, если она не существует:
CREATE DATABASE IF NOT EXISTS spaceport;
Переключитесь на базу данных spaceport:
USE spaceport;
Далее создайте партиционированную таблицу для протоколов полетов:
CREATE TABLE flight_logs (
flight_id STRING,
spacecraft STRING,
departure_time TIMESTAMP,
arrival_time TIMESTAMP,
destination STRING
)
PARTITIONED BY (year INT, month INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Наконец, выйдите из Hive с помощью следующей команды:
EXIT;
В вышеприведенном коде мы создаем партиционированную таблицу flight_logs с колонками для идентификатора полета, космического корабля, времени отправления, времени прибытия и пункта назначения. Таблица партиционирована по колонкам year и month, что означает, что данные будут организованы в отдельные партиции в зависимости от значений года и месяца.
Загрузить данные в партиционированную таблицу
В этом шаге вы загрузите примерные данные о протоколах полетов в партиционированную таблицу, которую вы создали на предыдущем шаге.
Во - первых, создайте некоторые файлы с примерами данных о протоколах полетов:
cat > /home/hadoop/flight_logs_1.txt << EOF
FL001,Andromeda Explorer,2023-06-01 08:00:00,2023-06-02 12:30:00,Andromeda Galaxy
FL002,Milky Way Voyager,2023-06-15 10:15:00,2023-06-16 06:45:00,Milky Way Galaxy
EOF
cat > /home/hadoop/flight_logs_2.txt << EOF
FL003,Cygnus Cruiser,2023-07-20 14:30:00,2023-07-21 09:00:00,Cygnus Constellation
FL004,Orion Shuttle,2023-07-25 18:00:00,2023-07-26 03:15:00,Orion Nebula
EOF
Затем загрузите данные в партиционированную таблицу:
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_1.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=6);"
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_2.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=7);"
В вышеприведенном коде мы сначала создаем некоторые файлы с примерами данных о протоколах полетов flight_logs_1.txt и flight_logs_2.txt с четырьмя записями о полетах. Затем мы используем команду LOAD DATA в Hive для загрузки данных в партиционированную таблицу flight_logs. Мы загружаем данные дважды, один раз для партиции year = 2023 и month = 6, и один раз для партиции year = 2023 и month = 7.
Создать квазиранжированную таблицу
В этом шаге вы создадите квазиранжированную таблицу для хранения данных грузовых манифестов, что повысит производительность запросов для запросов, в которых используется столбец cargo_type.
Во - первых, запустите Hive - оболочку, выполнив следующую команду:
hive
Затем переключитесь на базу данных spaceport:
USE spaceport;
Теперь создайте квазиранжированную таблицу для грузовых манифестов:
CREATE TABLE cargo_manifests (
manifest_id STRING,
cargo_type STRING,
destination STRING,
weight DOUBLE,
volume DOUBLE
)
CLUSTERED BY (cargo_type) INTO 4 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Наконец, выйдите из Hive с помощью следующей команды:
EXIT;
В вышеприведенном коде мы создаем квазиранжированную таблицу cargo_manifests с колонками для идентификатора манифеста, типа груза, пункта назначения, веса и объема. Таблица квазиранжирована (кластеризована) по столбцу cargo_type на 4 квазиранжирования, чтобы повысить производительность запросов для запросов, в которых используется столбец cargo_type.
Загрузить данные в квазиранжированную таблицу
В этом шаге вы загрузите примерные данные грузовых манифестов в квазиранжированную таблицу, которую вы создали на предыдущем шаге.
Во - первых, создайте файл с примерами данных грузовых манифестов
cat > /home/hadoop/cargo_manifests.txt << EOF
CM001,Electronics,Andromeda Galaxy,5.2,2.1
CM002,Machinery,Milky Way Galaxy,12.8,8.5
CM003,Food,Cygnus Constellation,3.1,1.5
CM004,Electronics,Orion Nebula,7.9,3.2
EOF
Затем загрузите данные в квазиранжированную таблицу
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/cargo_manifests.txt' OVERWRITE INTO TABLE spaceport.cargo_manifests;"
В вышеприведенном коде мы сначала создаем файл с примерами данных грузовых манифестов cargo_manifests.txt с четырьмя записями о грузах. Затем мы используем команду LOAD DATA в Hive для загрузки данных в квазиранжированную таблицу cargo_manifests.
Резюме
В этом практическом занятии мы изучили реализацию партиционирования и квазиранжирования в Hadoop Hive. Начали с создания партиционированной таблицы для хранения данных о протоколах полетов, партиционированной по году и месяцу. Этот подход позволяет эффективно осуществлять запросы и управлять данными, организовывая их в отдельные партиции на основе конкретных критериев.
Далее мы загрузили примерные данные о протоколах полетов в партиционированную таблицу с использованием команды LOAD DATA, убедившись, что данные корректно партиционированы по году и месяцу.
Затем мы создали квазиранжированную таблицу для хранения данных грузовых манифестов, квазиранжированную по столбцу cargo_type. Квазиранжирование помогает повысить производительность запросов, разделяя данные на более мелкие, управляемые части на основе конкретного столбца.
Наконец, мы загрузили примерные данные грузовых манифестов в квазиранжированную таблицу с использованием команды LOAD DATA.
Во время всего этого практического занятия мы узнали важность партиционирования и квазиранжирования в экосистеме Hadoop для оптимизации хранения данных, производительности запросов и общего управления данными. Реализация этих методов позволяет обеспечить эффективные операции в Агенстве по межзвездным космопортам и принимать обоснованные решения на основе обширных объемов данных.



