Запуск заданий Apache Hive
Hive
Вы можете запускать задания Hive как с помощью CLI Yandex Cloud, так и непосредственно на сервере с помощью Hive CLI.
Перед началом работы
-
Создайте сервисный аккаунт с ролями
dataproc.agent
иdataproc.provisioner
. -
В Object Storage создайте бакеты и настройте доступ к ним:
- Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение
READ
для этого бакета. - Создайте бакет для результатов обработки и предоставьте сервисному аккаунту кластера разрешение
READ и WRITE
для этого бакета.
- Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение
-
Создайте кластер Yandex Data Proc со следующими настройками:
- Сервисы:
HDFS
SPARK
HIVE
- Сервисный аккаунт: выберите созданный ранее сервисный аккаунт.
- Имя бакета: выберите бакет для результатов обработки.
- Публичный доступ: выберите опцию для доступа к хостам всех подкластеров.
- Сервисы:
Запуск задания с помощью CLI Yandex Cloud
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Запуск заданий с помощью CLI Yandex Cloud происходит посредством агента Yandex Data Proc, установленного на хосте-мастере кластера. Параметры заданий передаются агенту через Yandex Data Proc API.
Исполняемый файл и его зависимости должны находиться в хранилище, к которому есть доступ у сервисного аккаунта кластера Yandex Data Proc. У самого запускаемого приложения должен быть доступ к хранилищам, в которых хранятся исходный набор данных и результаты запуска.
Результат расчета сохраняется в бакет Yandex Object Storage вместе с сервисным выводом.
SQL-запрос для Hive можно передать двумя способами:
-
В команде на запуск задачи:
yc dataproc job create-hive \ --cluster-id=<идентификатор_кластера> \ --name=<имя_задачи> \ --query-list="SELECT Month, COUNT(*) FROM flights GROUP BY Month;"
-
В объекте Object Storage, который доступен на чтение сервисному аккаунту кластера Yandex Data Proc:
yc dataproc job create-hive \ --cluster-id=<идентификатор_кластера> \ --name=<имя_задачи> \ --query-file-uri="s3a://<бакет>/hive-query.sql"
Результат исполнения запросов, а также дополнительную диагностическую информацию можно найти в бакете Object Storage, который был указан при создании кластера: s3://<бакет>/dataproc/clusters/<идентификатор_кластера>/jobs/<идентификатор_задачи>/
.
Идентификатор задачи есть в выводе команды запуска задания YC CLI и есть в ответе API на запуск задания.
Примечание
Вы можете просматривать логи выполнения заданий и искать в них информацию с помощью сервиса Yandex Cloud Logging. Подробнее см. в разделе Работа с логами.
Запуск задания с помощью Hive CLI
-
Подключитесь к хосту-мастеру по SSH и выполните команду
hive
. -
Проверьте работоспособность Hive — выполните команду
select 1;
. Корректный результат выглядит так:OK 1 Time taken: 0.077 seconds, Fetched: 1 row(s)
-
Создайте внешнюю таблицу (external table) для данных примера в формате Parquet. Таблица будет содержать список перелетов между городами США в 2018-м году. Выполните следующий запрос с помощью Hive CLI:
CREATE EXTERNAL TABLE flights (Year bigint, Month bigint, FlightDate string, Flight_Number_Reporting_Airline bigint, OriginAirportID bigint, DestAirportID bigint) STORED AS PARQUET LOCATION 's3a://yc-mdb-examples/dataproc/example01/set01';
-
Проверьте список таблиц:
show tables;
-
Список таблиц должен выглядеть так:
OK flights Time taken: 0.043 seconds, Fetched: 1 row(s)
-
Запросите количество перелетов по месяцам:
SELECT Month, COUNT(*) FROM flights GROUP BY Month;
-
Пример результата такого запроса:
Query ID = root_20200119195338_28049b67-4de9-4568-a4c4-3bbe******** Total jobs = 1 Launching Job 1 out of 1 Status: Running (Executing on YARN cluster with App id application_157925157****_****) ---------------------------------------------------------------------------------------------- VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED ---------------------------------------------------------------------------------------------- Map 1 .......... container SUCCEEDED 6 6 0 0 0 0 Reducer 2 ...... container SUCCEEDED 1 1 0 0 0 0 ---------------------------------------------------------------------------------------------- VERTICES: 02/02 [==========================>>] 100% ELAPSED TIME: 11.52 s ---------------------------------------------------------------------------------------------- OK 1 570118 2 520731 3 611987 4 596046 5 616529 6 626193 7 645299 8 644673 9 585749 10 616101 11 586178 12 593842 Time taken: 12.137 seconds, Fetched: 12 row(s)
Примечание
Вы можете просматривать логи выполнения заданий и искать в них информацию с помощью сервиса Yandex Cloud Logging. Подробнее см. в разделе Работа с логами.