Введение
Добро пожаловать в Лабораторию по проектированию межгалактических трасс для космических гонок! В качестве известного дизайнера трасс для космических гонок ваша миссия - проанализировать данные прошлых гонок и разработать захватывающую новую трассу для предстоящей Чемпионата по межгалактическим космическим гонкам. Лучшие пилоты галактики будут соревноваться на этой трассе, подталкивая границы скорости и выносливости.
Ваша цель - использовать силу Hadoop и его функции агрегирования для извлечения ценных инсайтов из данных о гонках. Анализируя различные метрики, такие как время круга, использование подъема и потребление энергии, вы сможете выявить паттерны и принимать обоснованные решения по новому дизайну трассы.
Готовьтесь к захватывающему путешествию по космосу, где ваши аналитические навыки и знания о Hadoop будут определять будущее межгалактических гонок!
Настройка среды
В этом шаге мы настроим среду Hadoop и познакомимся с данными о гонках.
- Откройте терминал и переключитесь на пользователя
hadoop, выполнив следующую команду:
su - hadoop
- Перейдите в директорию
/home/hadoop:
cd /home/hadoop
- Создайте новую директорию с именем
race_dataи скопируйте в нее файлы с данными о гонках:
hadoop fs -mkdir -p /home/hadoop/race_data
hadoop fs -put /home/hadoop/race_data/* /home/hadoop/race_data
- Проверьте, были ли файлы скопированы успешно, выведя содержимое директории
race_data:
hadoop fs -ls /home/hadoop/race_data
В выводе вы должны увидеть перечисленные файлы с данными о гонках.
Анализ времени круга
В этом шаге мы будем использовать функцию avg для анализа среднего времени круга пилотов в прошлых гонках.
- Запустите Hive shell:
hive
- Создайте новую таблицу под названием
lap_timesдля хранения данных о времени круга:
CREATE TABLE lap_times (
pilot_id INT,
race_id INT,
lap_time DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- Загрузите данные о времени круга из файла
race_data/lap_times.csvв таблицуlap_times:
LOAD DATA INPATH '/home/hadoop/race_data/lap_times.csv' INTO TABLE lap_times;
- Вычислите среднее время круга для каждого пилота по всем гонкам:
SELECT pilot_id, avg(lap_time) AS avg_lap_time
FROM lap_times
GROUP BY pilot_id;
Этот запрос выведет среднее время круга для каждого пилота, позволяя вам определить самых быстрых пилотов и учитывать их сильные стороны при проектировании новой трассы.
Анализ использования подъема
В этом шаге мы будем использовать функции sum и count для анализа паттернов использования подъема пилотов в прошлых гонках.
- Создайте новую таблицу под названием
boost_usageдля хранения данных о использовании подъема:
CREATE TABLE boost_usage (
pilot_id INT,
race_id INT,
boost_used BOOLEAN
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- Загрузите данные о использовании подъема из файла
race_data/boost_usage.csvв таблицуboost_usage:
LOAD DATA INPATH '/home/hadoop/race_data/boost_usage.csv' INTO TABLE boost_usage;
- Вычислите общее количество раз, когда каждый пилот использовал подъем в гонках:
SELECT pilot_id, sum(CASE WHEN boost_used THEN 1 ELSE 0 END) AS total_boosts_used
FROM boost_usage
GROUP BY pilot_id;
- Вычислите процент гонок, в которых каждый пилот использовал подъем:
SELECT pilot_id,
round(
sum(CASE WHEN boost_used THEN 1 ELSE 0 END) * 100.0 / count(*),
2
) AS boost_usage_percentage
FROM boost_usage
GROUP BY pilot_id;
Эти запросы дадут представление о паттернах использования подъема пилотов, что поможет вам определить оптимальное расположение подъемных платформ и станций для перезарядки энергии на новой трассе.
Анализ энергопотребления
В этом шаге мы будем использовать функции min и max для анализа паттернов потребления энергии пилотов в прошлых гонках.
- Создайте новую таблицу под названием
energy_consumptionдля хранения данных о потреблении энергии:
CREATE TABLE energy_consumption (
pilot_id INT,
race_id INT,
energy_consumed DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- Загрузите данные о потреблении энергии из файла
race_data/energy_consumption.csvв таблицуenergy_consumption:
LOAD DATA INPATH '/home/hadoop/race_data/energy_consumption.csv' INTO TABLE energy_consumption;
- Найдите минимальное и максимальное потребление энергии для каждого пилота по всем гонкам:
SELECT pilot_id, min(energy_consumed) AS min_energy_consumed, max(energy_consumed) AS max_energy_consumed
FROM energy_consumption
GROUP BY pilot_id;
- Вычислите среднее потребление энергии для каждого пилота по всем гонкам:
SELECT pilot_id, avg(energy_consumed) AS avg_energy_consumed
FROM energy_consumption
GROUP BY pilot_id;
Эти запросы помогут вам понять паттерны потребления энергии пилотов, которые могут повлиять на расположение станций для перезарядки энергии и на дизайн энергоэффективных участков на новой трассе.
Резюме
В этом лабе вы изучали силу агрегирующих функций Hadoop для анализа различных аспектов данных о гонках, включая время круга, использование подъема и потребление энергии. Используя функции avg, sum, count, min и max, вы получили ценные инсайты о производительности и паттернах пилотов из прошлых гонок.
Эти инсайты будут служить основой для проектирования захватывающей новой трассы, которая будет учитывать сильные и слабые стороны пилотов, обеспечивая захватывающий и конкурентоспособный Международный чемпионат по межгалактическим космическим гонкам.
С помощью этого практического опыта вы не только потренировали свои навыки в области Hadoop и Hive, но и приобрели более глубокое понимание техник анализа данных, которые можно применять в различных областях. Поздравляем с завершением этого лаб и вкладом в будущее межгалактических гонок!



