Запуск заданий Apache Hive
Hive — инструмент доступа к хранилищам данных в экосистеме Hadoop. Позволяет работать с данными в разных форматах и СУБД, используя SQL-подобный язык запросов. Преимущественно используется для работы с данными в HDFS, HBase, S3-совместимых хранилищах и реляционных СУБД.
Вы можете запускать задания Hive как с помощью CLI Yandex Cloud, так и непосредственно на сервере с помощью Hive CLI.
Запуск задания с помощью CLI Yandex Cloud
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Запуск заданий с помощью CLI Yandex Cloud происходит посредством агента Data Proc, установленного на мастер-хосте кластера. Параметры заданий передаются агенту через Data Proc API.
Исполняемый файл и его зависимости должны находиться в хранилище, к которому есть доступ у сервисного аккаунта кластера Data Proc. У самого запускаемого приложения должен быть доступ к хранилищам, в которых хранятся исходный набор данных и результаты запуска.
Результат расчета сохраняется в бакет Yandex Object Storage вместе с сервисным выводом.
SQL-запрос для Hive можно передать двумя способами:
-
В команде на запуск задачи:
yc dataproc job create-hive --cluster-id <ID кластера> --name <имя задачи> --query-list "SELECT Month, COUNT(*) FROM flights GROUP BY Month;"
-
В объекте Object Storage, который доступен на чтение сервисному аккаунту кластера Data Proc:
yc dataproc job create-hive --cluster-id <ID кластера> --name <имя задачи> --query-file-uri "s3a://<ваш бакет>/hive-query.sql"
Результат исполнения запросов, а также дополнительную диагностическую информацию можно найти в бакете Object Storage, который был указан при создании кластера: s3://<ваш бакет>/dataproc/clusters/<ID кластера>/jobs/<ID задачи>/
.
ID задачи есть в выводе команды запуска задания YC CLI и есть в ответе API на запуск задания.
Запуск задания с помощью Hive CLI
Чтобы запустить командную оболочку (CLI) для Apache Hive, подключитесь к хосту-мастеру по SSH и выполните команду hive
.
После этого проверьте работоспособность Hive — выполните команду select 1;
. Корректный результат выглядит так:
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-3bbe500b78a1 Total jobs = 1 Launching Job 1 out of 1 Status: Running (Executing on YARN cluster with App id application_1579251575762_0013) ---------------------------------------------------------------------------------------------- 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)