Введение
Год - 2285, и человечество создало процветающий космический станцию, вращающуюся вокруг планеты Марс. Это исследовательское учреждение, называемое Марсианским обсерваторией, служит центром научного исследования и открытий. Среди многих ученых, работающих здесь, - д-р Эмма Уилкинс, выдающаяся аналитик данных, специализирующийся на астрономических наблюдениях.
Д-р Уилкинс получила задачу анализировать огромные объемы данных, собранных с различных телескопов и приборов на станции. Однако данные находятся в необработанном формате, и ей нужно обработать и манипулировать ими, чтобы извлечь значимые выводы. Одной из ключевых проблем, с которой она сталкивается, является работа с информацией о дате и времени, так как многие наблюдения являются чувствительными к времени и требуют точных расчетов дат.
Чтобы справиться с этой проблемой, д-р Уилкинс должна использовать мощные функции работы с датами, доступные в Hadoop Hive, решении для хранения данных, предназначенном для обработки больших данных. Освоив эти функции, она сможет эффективно манипулировать и анализировать данные о дате и времени, что позволит ей выявить паттерны, тенденции и аномалии, которые могут привести к революционным открытиям в области астрономии.
Настройка среды Hive
В этом шаге мы настроим среду Hive и создадим примерный набор данных для практики функций работы с датами.
- Сначала переключитесь на пользователя
hadoop, выполнив следующую команду в терминале:
su - hadoop
- Теперь запустите Hive shell, выполнив следующую команду:
hive
- Создайте новую таблицу Hive под названием
observationsсо следующей схемой:
CREATE TABLE observations (
observation_id INT,
telescope STRING,
observation_date STRING,
observation_time STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- Загрузите некоторые примерные данные в таблицу
observations:
LOAD DATA LOCAL INPATH '/home/hadoop/resources/observations.csv' OVERWRITE INTO TABLE observations;
Файл observations.csv содержит примерные данные наблюдений с колонками observation_id, telescope, observation_date (в формате yyyy-MM-dd) и observation_time (в формате HH:mm:ss).
Использование функции year()
В этом шаге мы узнаем, как использовать функцию year() в Hive для извлечения года из строки даты.
Функция year() принимает строку даты или временной метки в качестве входных данных и возвращает компонент года в виде целочисленного значения.
Откройте консоль Hive, выполнив команду
hiveв терминале.Выполните следующий запрос, чтобы извлечь год из столбца
observation_date:
SELECT observation_id, year(observation_date) AS observation_year
FROM observations;
Этот запрос вернет observation_id и соответствующий год для каждого наблюдения в таблице.
- Вы также можете использовать функцию
year()в сочетании с другими функциями или предложениями по работе с датами. Например, чтобы отфильтровать наблюдения за определенный год, вы можете использовать следующий запрос:
SELECT *
FROM observations
WHERE year(observation_date) = 2022;
Этот запрос вернет все наблюдения, в которых компонент года observation_date равен 2022.
Использование функции datediff()
В этом шаге мы узнаем, как использовать функцию datediff() в Hive для вычисления разницы между двумя датами.
Функция datediff() принимает две строки даты или временных меток в качестве входных данных и возвращает количество дней между ними.
Откройте консоль Hive, если она еще не открыта.
Выполните следующий запрос, чтобы вычислить количество дней между двумя датами наблюдений:
SELECT observation_id,
observation_date,
'2022-12-31' AS reference_date,
datediff('2022-12-31', observation_date) AS days_until_end_of_year
FROM observations;
Этот запрос вернет observation_id, observation_date, дату-референс (2022-12-31) и количество дней между observation_date и датой-референсом (days_until_end_of_year).
- Вы также можете использовать функцию
datediff()с другими функциями или предложениями по работе с датами. Например, чтобы отфильтровать наблюдения в определенном диапазоне дат, вы можете использовать следующий запрос:
SELECT *
FROM observations
WHERE datediff(observation_date, '2022-01-01') BETWEEN 0 AND 180;
Этот запрос вернет все наблюдения, где observation_date находится между 1 января 2022 года и 30 июня 2022 года (включительно).
Использование функции date_format()
В этом шаге мы узнаем, как использовать функцию date_format() в Hive для преобразования строки даты из одного формата в другой.
Функция date_format() принимает два аргумента: строку даты или временной метки и шаблон формата. Она возвращает строку даты или временной метки в указанном шаблоне формата.
Откройте консоль Hive, если она еще не открыта.
Выполните следующий запрос, чтобы преобразовать столбец
observation_dateиз форматаyyyy-MM-ddв форматMMM dd, yyyy:
SELECT observation_id,
observation_date,
date_format(observation_date, 'MMM dd, yyyy') AS formatted_date
FROM observations;
Этот запрос вернет observation_id, исходную observation_date и отформатированную дату (formatted_date) в формате MMM dd, yyyy (например, Jun 15, 2022).
- Вы также можете использовать функцию
date_format()с другими функциями или предложениями по работе с датами. Например, чтобы отфильтровать наблюдения на основе определенного формата даты, вы можете использовать следующий запрос:
SELECT *
FROM observations
WHERE date_format(observation_date, 'yyyy/MM/dd') = '2022/06/15';
Этот запрос вернет все наблюдения, где observation_date, когда отформатирована в виде yyyy/MM/dd, равна 2022/06/15.
Использование функции add_months()
В этом шаге мы узнаем, как использовать функцию add_months() в Hive для добавления или вычитания месяцев из даты.
Функция add_months() принимает два аргумента: строку даты или временной метки и целое значение, представляющее количество месяцев, которое нужно добавить или вычесть.
Откройте консоль Hive, если она еще не открыта.
Выполните следующий запрос, чтобы добавить шесть месяцев к столбцу
observation_date:
SELECT observation_id,
observation_date,
add_months(observation_date, 6) AS date_plus_six_months
FROM observations;
Этот запрос вернет observation_id, исходную observation_date и дату, которая наступит через шесть месяцев после observation_date (date_plus_six_months).
- Вы также можете использовать функцию
add_months()с другими функциями или предложениями по работе с датами. Например, чтобы отфильтровать наблюдения в определенном месячном диапазоне, вы можете использовать следующий запрос:
SELECT *
FROM observations
WHERE month(add_months(observation_date, 6)) BETWEEN 1 AND 6;
Этот запрос вернет все наблюдения, где месяц даты, которая наступит через шесть месяцев после observation_date, находится между январём и июнем (включительно).
Резюме
В этом практическом занятии мы познакомились с функциями для работы с датами в Hadoop Hive, мощном решении для обработки больших данных в области хранение данных. В захватывающей сценарии, unfolding на космической станции, вращающейся вокруг Марса в будущем, мы сопровождали Эмму Уилкинс, выдающуюся аналитика данных, которая должна была проанализировать астрономические наблюдения.
Мастерствуя функциям для работы с датами, такими как year(), datediff(), date_format() и add_months(), д-р Уилкинс приобрела возможность эффективно манипулировать и анализировать дату и время, что позволило ей выявить паттерны, тенденции и аномалии, которые могут привести к революционным открытиям в астрономии.
Во время практического занятия мы рассмотрели примеры на практике и предоставили проверочные задания, чтобы обеспечить беспрепятственный опыт обучения. Взаимодействие в рамках практического занятия позволило учащимся практиковаться и углублять свое понимание этих важных функций, создавая твердый фундамент для более продвинутых методов анализа данных.
В целом, это практическое занятие не только передало ценные технические навыки, но и вдохновило чувством восхищения и любопытства к великолепному миру Вселенной. Назначив учащимся инструменты для раскрытия секретов, скрытых в астрономических данных, мы создали условия для будущих поколений ученых, которые смогут расширить границы человеческого знания и исследования.



