Поделиться через


Оптимизация запросов с помощью имитации заданий

Одним из способов повышения производительности задания Azure Stream Analytics (ASA) является применение параллелизма в запросе. В этой статье показано, как использовать имитацию заданий в портал Azure и Visual Studio Code (VS Code) для оценки параллелизма запросов для задания Stream Analytics. Вы научитесь визуализировать выполнение запроса с разным количеством единиц потоковой передачи и улучшать параллелизм запросов на основе предложений по редактированию.

Что такое параллельный запрос?

Параллелизм запросов разделяет рабочую нагрузку запроса путем создания нескольких процессов (или узлов потоковой передачи) и выполняет ее параллельно. Это значительно сокращает общее время выполнения запроса и, следовательно, меньше часов потоковой передачи.

Чтобы задание было параллельным, все входные, выходные данные и шаги запроса должны быть выровнены и использовать одни и те же ключи секций. Секционирование логики запросов определяется ключами, используемыми для агрегирования (GROUP BY).

Дополнительные сведения о параллелизации запросов см. в статье Использование параллелизации запросов в Azure Stream Analytics.

Использование имитации заданий в VS Code

Функция имитации заданий имитирует выполнение топологии задания в Azure. В этом руководстве вы узнаете, как повысить производительность запросов на основе предложений по редактированию и выполнить их параллельно. Например, мы используем непараллельное задание, которое принимает входные данные из концентратора событий и отправляет результаты в другой концентратор событий.

Предварительные требования:

  • Расширение средств ASA для VS Code. Если вы еще не установили его, выполните инструкции из этого руководства .
  • Настройте динамические входные и динамические выходные данные для задания Stream Analytics.
  • В запрос необходимо включить динамические входные и выходные данные.

Примечание

Симуляция заданий не может имитировать выполняющуюся топологию задания для локальных входных и выходных данных. Во время моделирования данные не будут отправляться в место назначения вывода.

  1. Откройте проект ASA в VS Code. Перейдите к файлу запроса *.asaql и выберите Имитация задания , чтобы запустить имитацию задания.

    Снимок экрана: симулятор схемы заданий открытия VS Code в файле запроса.

  2. На вкладке Схема отображается количество узлов потоковой передачи, выделенных для задания, и количество секций в каждом узле потоковой передачи. На следующем снимке экрана показан пример непараллельного задания, в котором данные передаются между узлами.

    Снимок экрана: VS Code с симулятором схемы заданий и топологией заданий.

  3. Так как этот запрос не выполняется параллельно, можно выбрать вкладку Улучшения , чтобы просмотреть предложения по улучшению запроса.

    Снимок экрана: VS Code с симулятором схемы заданий и предложениями по редактированию запроса.

  4. Выберите шаг запроса в списке улучшений, вы увидите, что соответствующие строки выделены, и вы можете изменить запрос на основе предложений.

    Снимок экрана: VS Code с симулятором схемы заданий и выделенным шагом запроса.

    Примечание

    Это предложения по изменению для улучшения параллелизма запросов. Однако если вы используете агрегатную функцию для всех секций, параллельный запрос может быть неприменим для ваших сценариев.

  5. В этом примере вы добавляете PartitionId в строку No 22 и сохраняете изменения. Затем можно использовать имитацию обновления , чтобы получить новую схему.

    Снимок экрана: схема обновления после обновления запроса.

  6. Вы также можете настроить единицы потоковой передачи , чтобы стимулировать выделение узлов потоковой передачи с разными единицами. Он дает представление о том, сколько единиц SU необходимо для обработки рабочей нагрузки.

    Снимок экрана: VS Code с помощью средства настройки SU.

Использование имитации заданий в портал Azure

  1. Перейдите в редактор запросов в портал Azure и выберите Имитация заданий в нижней области. Он имитирует выполняющуюся топологию задания на основе запроса и предопределенных единиц потоковой передачи. Снимок экрана: имитация открытия задания на портале.
  2. Выберите Усовершенствования, чтобы просмотреть предложения по улучшению параллелизма запросов. Снимок экрана: улучшения моделирования открытых заданий на портале.
  3. Настройте единицы потоковой передачи, чтобы узнать, сколько единиц SU необходимо для обработки рабочей нагрузки. Снимок экрана: настройка su на портале.

Схема уровня процессора

После настройки единиц потоковой передачи для имитации топологии задания можно развернуть любой из узлов потоковой передачи, чтобы наблюдать за обработкой данных на уровне процессора.

Снимок экрана в формате GIF, на котором показана схема уровня процессора симулятора.

Схема уровня процессора позволяет:

  • следите за выделением и обработкой входных секций на каждом узле потоковой передачи.
  • узнайте, что такое временной сдвиг для каждого вычислительного процессора.
  • предоставляют сведения о том, выравниваются ли обработчики входных и выходных данных параллельно.

Чтобы сопоставить процессор с шагом запроса, дважды выберите на схеме. Эта функция помогает найти шаги запроса, выполняющие агрегирование.

Снимок экрана: функция сопоставления имитации заданий в VS Code.

Предложения по улучшению

Ниже приведены пояснения к усовершенствованиям.

Тип Значение
Настраиваемая секция не поддерживается Измените входной ключ секции xxx на xxx.
Число секций, не соответствующих Входные и выходные данные должны иметь одинаковое количество секций.
Ключи секции не совпадают Входные, выходные данные и каждый шаг запроса должны использовать один и тот же ключ секции.
Число не совпадаемых входных секций Все входные данные должны иметь одинаковое количество секций.
Ключи входных разделов не совпадают Все входные данные должны использовать один и тот же ключ секции.
Низкий уровень совместимости Обновление файла CompatibilityLevel в файле JobConfig.json .
Ключ выходной секции не найден Для выходных данных необходимо использовать указанный ключ секции.
Настраиваемая секция не поддерживается Можно использовать только предопределенные ключи секций.
Шаг запроса без использования секции В запросе не используется предложение PARTITION BY.

Дальнейшие действия

Если вы хотите узнать больше о параллелизации запросов и схеме заданий, проверка следующие руководства: