Выходные данные из Azure Stream Analytics

Задание Azure Stream Analytics состоит из входных данных, запроса и выходных данных. Вы можете отправлять преобразованные данные в несколько типов выходных данных. В этой статье перечислены поддерживаемые выходные данные Stream Analytics. При разработке запроса Stream Analytics обратитесь к имени выходных данных с помощью предложения INTO. Вы можете использовать один результирующий выход для одной задачи или несколько выходных данных для каждой задачи потоковой обработки, добавив несколько операторов INTO в запрос.

Для создания, редактирования и тестирования выходных данных заданий Stream Analytics можно использовать портал Azure, Azure PowerShell, API .NET, REST API, Visual Studio и Visual Studio Code.

Замечание

Для лучшей локальной разработки используйте средства Stream Analytics для Visual Studio Code. Средства Stream Analytics для Visual Studio 2019 (версия 2.6.3000.0) имеют известные пробелы функций и не будут улучшены.

Некоторые типы выходных данных поддерживают секционирование , как показано в следующей таблице.

Все выходные данные поддерживают пакетную обработку, но только некоторые поддерживают явное задание размера выходного пакета. Дополнительные сведения см. в разделе Размеры пакетов вывода.

Тип выходных данных Partitioning Безопасность
Обозреватель данных Azure Да Управляемая идентичность
Функции Azure Да Ключ доступа
Azure Synapse Analytics Да Аутентификация пользователя SQL,
управляемое удостоверение
Хранилище Blob и Azure Data Lake второго поколения Да Ключ доступа,
управляемая идентификация
Azure Cosmos DB Да Ключ доступа,
управляемая идентификация
Azure Data Lake Storage 2-го поколения Да Пользовательское управляемое удостоверение Microsoft Entra
Центры событий Azure Да, необходимо задать столбец ключа раздела в конфигурации вывода. Ключ доступа,
управляемая идентификация
Kafka (предварительная версия) Да, необходимо задать столбец ключа раздела в конфигурации вывода. Ключ доступа,
управляемая идентификация
База данных Azure для PostgreSQL Да Проверка подлинности имени пользователя и пароля
Power BI нет Пользователь Microsoft Entra, Управляемое удостоверение
Очереди служебной шины Azure Да Ключ доступа,
управляемая идентификация
Темы служебной шины Azure Да Ключ доступа,
управляемая идентификация
База данных SQL Azure Да, необязательно. Аутентификация пользователя SQL,
управляемое удостоверение
Хранилище таблиц Azure Да Ключ учетной записи

Это важно

Azure Stream Analytics использует API вставки или замены по умолчанию. Эта операция заменяет существующую сущность или вставляет новую сущность, если она не существует в таблице.

Partitioning

Stream Analytics поддерживает секции для всех выходных данных, кроме Power BI. Дополнительные сведения о ключах раздела и количестве потоков записи см. в статье, соответствующей интересующему вас типу вывода. Статьи о типах выходных данных приведены в предыдущем разделе.

Для более продвинутой настройки секций можно управлять количеством выходных писателей с помощью предложения INTO <partition count> в запросе (см. INTO). Этот элемент управления поможет вам достичь требуемой топологии заданий. Если выходной адаптер не разделен на части, отсутствие данных в одном входном разделе приводит к задержке до времени позднего прибытия. В таких случаях выходные данные объединяются в одно записывающее устройство, что может привести к узким местам в потоке обработки. Дополнительные сведения о политике позднего прибытия см. в рекомендациях по заказу событий Azure Stream Analytics.

Размер выходного пакета

Все выходные данные поддерживают пакетную обработку, но только некоторые поддерживают явное задание размера пакета. Azure Stream Analytics использует пакеты с переменным размером для обработки событий и записи результатов. Как правило, подсистема Stream Analytics не записывает одно сообщение одновременно и использует пакеты для повышения эффективности. Если скорость входящих и исходящих событий высока, Stream Analytics использует более крупные пакеты. Если скорость исходящего трафика низка, она использует небольшие пакеты для снижения задержки.

Поведение разбиения файлов Avro и Parquet

Запрос Stream Analytics может создать несколько схем для заданного выходного данных. Список проецируемых столбцов и их тип может изменяться в зависимости от каждой строки. По проектированию форматы Avro и Parquet не поддерживают схемы переменных в одном файле.

При перенаправлении потока с переменными схемами на выход могут наблюдаться следующие поведения:

  • Если можно обнаружить изменение схемы, текущий выходной файл закрывается, а новый инициализирован в новой схеме. Разделение файлов, таких как такое, сильно замедляет выходные данные при частом изменении схемы. Это поведение может серьезно повлиять на общую производительность задания.
  • Если изменение схемы не удается обнаружить, строка, скорее всего, отклонена, и задание останавливается, из-за того что строка не может быть выведена. Вложенные столбцы или многотипные массивы — это случаи, которые не выявляются и не отбрасываются.

Рассматривайте выходные данные в формате Avro или Parquet как строго типизированные или с схемой при записи, и формируйте запросы для них, используя явные преобразования и проекции для обеспечения единой схемы.

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

Свойства окна пакетной обработки Parquet

При использовании развертывания шаблона Azure Resource Manager или REST API необходимо задать два свойства окна пакетной обработки:

  1. timeWindow

    Максимальное время ожидания для каждого пакета. Задайте значение в виде строки Timespan. Например, используйте 00:02:00 в течение двух минут. После этого пакет записывается в выходные данные, даже если минимальные требования к строкам не выполнены. Значение по умолчанию составляет одну минуту, а допустимое максимальное значение — два часа. Если вывод большого двоичного объекта имеет паттерн частоты пути, время ожидания не может быть выше диапазона времени раздела.

  2. sizeWindow

    Количество минимальных строк на пакет. Для Parquet для каждого пакета создается новый файл. Текущее значение по умолчанию — 2000 строк, а допустимое максимальное значение — 10 000 строк.

API версии 2017-04-01-preview или более поздней поддерживает эти свойства окна пакетной обработки. Ниже представлен пример JSON-полезной нагрузки для вызова REST API:

"type": "stream",
      "serialization": {
        "type": "Parquet",
        "properties": {}
      },
      "timeWindow": "00:02:00",
      "sizeWindow": "2000",
      "datasource": {
        "type": "Microsoft.Storage/Blob",
        "properties": {
          "storageAccounts" : [
          {
            "accountName": "{accountName}",
            "accountKey": "{accountKey}",
          }
          ],

Дальнейшие шаги