Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Processing
  • Начало работы
    • Все руководства
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Работа с заданиями в CLI Yandex Cloud
  • Перед началом работы
  • Передача SQL-запроса в команде на запуск задачи
  • Передача SQL-запроса в объекте Object Storage
  • Работа с заданиями в Hive CLI
  • Перед началом работы
  • Запуск задания с помощью Hive CLI
  1. Практические руководства
  2. Работа с заданиями
  3. Запуск заданий Apache Hive

Запуск заданий Apache Hive

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.
  • Работа с заданиями в CLI Yandex Cloud
    • Перед началом работы
    • Передача SQL-запроса в команде на запуск задачи
    • Передача SQL-запроса в объекте Object Storage
  • Работа с заданиями в Hive CLI
    • Перед началом работы
    • Запуск задания с помощью Hive CLI

Hive — инструмент доступа к хранилищам данных в экосистеме Hadoop. Позволяет работать с данными в разных форматах и СУБД, используя SQL-подобный язык запросов. Преимущественно используется для работы с данными в HDFS, HBase, S3-совместимых хранилищах и реляционных СУБД.

Вы можете запускать задания Hive как с помощью CLI Yandex Cloud, так и непосредственно на сервере с помощью Hive CLI.

Примечание

Вы можете просматривать логи выполнения заданий и искать в них информацию с помощью сервиса Yandex Cloud Logging. Подробнее см. в разделе Работа с логами.

Работа с заданиями в CLI Yandex CloudРабота с заданиями в CLI Yandex Cloud

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

Запуск заданий с помощью Yandex Cloud CLI происходит посредством агента Yandex Data Processing, установленного на хосте-мастере кластера. Параметры заданий передаются агенту через Yandex Data Processing API.

Исполняемый файл и его зависимости должны находиться в хранилище, к которому есть доступ у сервисного аккаунта кластера Yandex Data Processing. У самого запускаемого приложения должен быть доступ к хранилищам, в которых хранятся исходный набор данных и результаты запуска.

SQL-запрос для Hive можно передать двумя способами:

  • в команде на запуск задачи;
  • в объекте Object Storage, который доступен на чтение сервисному аккаунту кластера Yandex Data Processing.

Результат выполнения запроса сохраняется в привязанный к кластеру бакет Yandex Object Storage вместе с сервисным выводом.

Перед началом работыПеред началом работы

  1. Создайте сервисный аккаунт с ролями dataproc.agent и dataproc.provisioner.

  2. В Object Storage создайте бакеты и настройте доступ к ним:

    1. Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение READ для этого бакета.
    2. Создайте бакет для результатов обработки и предоставьте сервисному аккаунту кластера разрешение READ и WRITE для этого бакета.
  3. Создайте кластер Yandex Data Processing со следующими настройками:

    • Сервисы:
      • HDFS;
      • HIVE;
      • MAPREDUCE;
      • SPARK;
      • YARN.
    • Сервисный аккаунт — выберите созданный ранее сервисный аккаунт.
    • Имя бакета — выберите бакет для результатов обработки.
    • Публичный доступ — включите опцию для доступа к хостам всех подкластеров.

Передача SQL-запроса в команде на запуск задачиПередача SQL-запроса в команде на запуск задачи

  1. Создайте внешнюю таблицу (external table) для данных примера в формате Parquet. Таблица будет содержать список перелетов между городами США в 2018-м году. Выполните следующий запрос с помощью CLI Yandex Cloud:

    yc dataproc job create-hive \
       --cluster-id=<идентификатор_кластера> \
       --name=task-one \
       --query-list="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';"
    
    Пример ответа на запрос
    done (14s)
    id: c9qloj5crovu********
    cluster_id: c9qkjos5sa3d********
    created_at: "2024-12-04T03:51:03.285819Z"
    started_at: "2024-12-04T03:51:15.884426Z"
    finished_at: "2024-12-04T03:51:15.884426Z"
    name: task-one
    created_by: ajefhe0o8uas********
    status: DONE
    hive_job:
      query_list:
        queries:
          - 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';
    application_info: {}
    
  2. Проверьте, что таблица успешно создалась. Для этого запросите количество перелетов по месяцам:

    yc dataproc job create-hive \
       --cluster-id=<идентификатор_кластера> \
       --name=task-two \
       --query-list="SELECT Month, COUNT(*) FROM flights GROUP BY Month;"
    
    Пример ответа на запрос
    done (34s)
    id: c9quejacclo3********
    cluster_id: c9qkjos5sa3d********
    created_at: "2024-12-04T05:15:38.436203Z"
    started_at: "2024-12-04T05:16:11.608422Z"
    finished_at: "2024-12-04T05:16:11.608422Z"
    name: task-two
    created_by: ajefhe0o8uas********
    status: DONE
    hive_job:
      query_list:
        queries:
          - SELECT Month, COUNT(*) FROM flights GROUP BY Month;
    application_info: {}
    
  3. В бакете для результатов обработки перейдите в папку:

    dataproc/clusters/<идентификатор_кластера>/jobs/<идентификатор_задания_Hive>
    

    Идентификатор задания указан в выводе команды запуска задания YC CLI и в ответе API на запуск задания.

  4. Скачайте файл driveroutput.000000000, который содержит ответ на запрос.

    Пример ответа на запрос
    Init job c9quejacclo3******** at Wed Dec  4 05:15:40 UTC 2024
    ...
    Connecting to jdbc:hive2://localhost:10000
    Connected to: Apache Hive (version 3.1.2)
    Driver: Hive JDBC (version 3.1.2)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    0: jdbc:hive2://localhost:10000> SELECT Month, COUNT(*) FROM flights GROUP BY Month;;
    +--------+---------+
    | month  |   _c1   |
    +--------+---------+
    | 1      | 570118  |
    | 2      | 520731  |
    | 3      | 611987  |
    | 4      | 596046  |
    | 5      | 616529  |
    | 6      | 626193  |
    | 7      | 645299  |
    | 8      | 644673  |
    | 9      | 585749  |
    | 10     | 616101  |
    | 11     | 586178  |
    | 12     | 593842  |
    +--------+---------+
    12 rows selected (27.532 seconds)
    0: jdbc:hive2://localhost:10000>
    0: jdbc:hive2://localhost:10000> Closing: 0: jdbc:hive2://localhost:10000
    

    Если при выполнении запроса возникнут ошибки, информация о них также сохранится в файле driveroutput.000000000.

Передача SQL-запроса в объекте Object StorageПередача SQL-запроса в объекте Object Storage

  1. Создайте файл create-table.sql и поместите в него SQL-запрос для создания внешней таблицы (external table) для данных примера в формате Parquet. Таблица будет содержать список перелетов между городами США в 2018-м году. SQL-запрос будет выглядеть так:

    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';
    
  2. Загрузите файл create-table.sql в бакет для исходных данных.

  3. Выполните команду:

    yc dataproc job create-hive \
      --cluster-id=<идентификатор_кластера> \
      --name=task-one \
      --query-file-uri="s3a://<имя_бакета_для_исходных_данных>/create-table.sql"
    
    Пример ответа на запрос
    done (8s)
    id: c9qhpt6334qs********
    cluster_id: c9qkjos5sa3d********
    created_at: "2024-12-04T04:21:20.062704Z"
    started_at: "2024-12-04T04:21:27.702644Z"
    finished_at: "2024-12-04T04:21:27.702644Z"
    name: task-one
    created_by: ajefhe0o8uas********
    status: DONE
    hive_job:
      query_file_uri: s3a://<имя_бакета_для_исходных_данных>/create-table.sql
    application_info: {}
    
  4. Создайте файл get-data.sql и поместите в него SQL-запрос на количество перелетов по месяцам:

    SELECT Month, COUNT(*) FROM flights GROUP BY Month;
    
  5. Загрузите файл get-data.sql в бакет для исходных данных.

  6. Выполните команду:

    yc dataproc job create-hive \
      --cluster-id=<идентификатор_кластера> \
      --name=task-two \
      --query-file-uri="s3a://<имя_бакета_для_исходных_данных>/get-data.sql"
    
    Пример ответа на запрос
    done (37s)
    id: c9q2srq817cu********
    cluster_id: c9qkjos5sa3d********
    created_at: "2024-12-04T04:24:58.480468Z"
    started_at: "2024-12-04T04:25:34.613549Z"
    finished_at: "2024-12-04T04:25:34.613549Z"
    name: task-two
    created_by: ajefhe0o8uas********
    status: DONE
    hive_job:
      query_file_uri: s3a://<имя_бакета_для_исходных_данных>/get-data.sql
    application_info: {}
    
  7. В бакете для результатов обработки перейдите в папку:

    dataproc/clusters/<идентификатор_кластера>/jobs/<идентификатор_задания_Hive>
    

    Идентификатор задания указан в выводе команды запуска задания YC CLI и в ответе API на запуск задания.

  8. Скачайте файл driveroutput.000000000, который содержит ответ на запрос.

    Пример ответа на запрос
    Init job c9q2gha5hocg******** at Wed Dec  4 06:56:45 UTC 2024
    ...
    Connecting to jdbc:hive2://localhost:10000
    Connected to: Apache Hive (version 3.1.2)
    Driver: Hive JDBC (version 3.1.2)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    0: jdbc:hive2://localhost:10000> SELECT Month, COUNT(*) FROM flights GROUP BY Month;
    +--------+---------+
    | month  |   _c1   |
    +--------+---------+
    | 1      | 570118  |
    | 2      | 520731  |
    | 3      | 611987  |
    | 4      | 596046  |
    | 5      | 616529  |
    | 6      | 626193  |
    | 7      | 645299  |
    | 8      | 644673  |
    | 9      | 585749  |
    | 10     | 616101  |
    | 11     | 586178  |
    | 12     | 593842  |
    +--------+---------+
    12 rows selected (28.801 seconds)
    0: jdbc:hive2://localhost:10000> Closing: 0: jdbc:hive2://localhost:10000
    

    Если при выполнении запроса возникнут ошибки, информация о них также сохранится в файле driveroutput.000000000.

Работа с заданиями в Hive CLIРабота с заданиями в Hive CLI

Перед началом работыПеред началом работы

  1. Создайте сервисный аккаунт с ролями dataproc.agent и dataproc.provisioner.

  2. Создайте кластер Yandex Data Processing со следующими настройками:

    • Сервисы:
      • HDFS;
      • HIVE;
      • SPARK;
      • YARN.
    • Сервисный аккаунт — выберите созданный ранее сервисный аккаунт.
    • Публичный доступ — включите опцию для доступа к хостам всех подкластеров.

Запуск задания с помощью Hive CLIЗапуск задания с помощью Hive CLI

  1. Подключитесь к хосту-мастеру по SSH и выполните команду hive.

  2. Проверьте работоспособность Hive — выполните команду select 1;. Корректный результат выглядит так:

    OK
    1
    Time taken: 0.077 seconds, Fetched: 1 row(s)
    
  3. Создайте внешнюю таблицу (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';
    
  4. Проверьте список таблиц:

    show tables;
    
  5. Список таблиц должен выглядеть так:

    OK
    flights
    Time taken: 0.043 seconds, Fetched: 1 row(s)
    
  6. Запросите количество перелетов по месяцам:

    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)
    

Была ли статья полезна?

Предыдущая
Работа с заданиями Spark
Следующая
Запуск Spark-приложений
Проект Яндекса
© 2025 ООО «Яндекс.Облако»