Работа с заданиями Hive
Apache Hive
В этой статье на простом примере показывается, как в Yandex Data Processing использовать Hive для анализа данных. При помощи Hive в приведенном примере анализируется численность населения крупнейших городов России.
Перед началом работы
-
Создайте сервисный аккаунт с ролями
dataproc.agent
иdataproc.provisioner
. -
В Object Storage создайте бакеты и настройте доступ к ним:
- Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение
READ
для этого бакета. - Создайте бакет для результатов обработки и предоставьте сервисному аккаунту кластера разрешение
READ и WRITE
для этого бакета.
- Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение
-
Создайте кластер Yandex Data Processing со следующими настройками:
- Сервисы:
HDFS
SPARK
HIVE
- Сервисный аккаунт: выберите созданный ранее сервисный аккаунт.
- Имя бакета: выберите бакет для результатов обработки.
- Сервисы:
Создайте задание Hive
-
В бакете для исходных данных создайте папку
cities
и загрузите в нее файл для обработкиcities.csv
:cities.csv
Moscow,12655000 Saint Petersburg,5384000 Novosibirsk,1620000 Yekaterinburg,1495000 Kazan,1257000 Nizhny Novgorod,1244000 Chelyabinsk,1188000 Samara,1145000 Omsk,1140000 Rostov-on-Don,1138000 Ufa,1126000 Krasnoyarsk,1093000 Voronezh,1051000 Perm,1049000 Volgograd,1005000
В файле показана численность населения крупнейших городов России, с населением более одного миллиона человек, по оценке на 2021 год (округленно).
-
Создайте и загрузите в бакет для исходных данных файл c SQL-запросами
cities.sql
:cities.sql
/* Создать внешнюю таблицу с данными, которые содержатся в CSV-файлах: */ CREATE EXTERNAL TABLE IF NOT EXISTS cities (city_name string, population decimal) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3a://<бакет_для_исходных_данных>/cities'; /* Показать количество городов и суммарную численность населения в них: */ SELECT COUNT(*) num_cities, SUM(population) sum_populataion FROM cities; /* Показать минимальную и максимальную численность населения: */ SELECT MIN(population) min_population, MAX(population) max_population FROM cities;
-
Создайте задание Hive с параметрами:
- Драйвер:
Файл
- Файл с запросами:
s3a://<имя_бакета_для_исходных_данных>/cities.sql
- Драйвер:
-
Подождите, пока статус задания изменится на
Done
. -
Откройте логи задания и просмотрите результаты обработки:
Логи
... OK 15 33590000 Time taken: 21.104 seconds, Fetched: 1 row(s) ... OK 1005000 12655000 Time taken: 3.393 seconds, Fetched: 1 row(s)
Примечание
Вы можете просматривать логи выполнения заданий и искать в них информацию с помощью сервиса Yandex Cloud Logging. Подробнее см. в разделе Работа с логами.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать: