Вывод данных из 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) имеются известные функциональные пробелы, и они не будут улучшаться в дальнейшем.

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

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

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

Важно!

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

Секционирование

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 в течение двух минут. После этого пакет записывается в выходные данные, даже если минимальные требования к строкам не выполнены. Значение по умолчанию — 1 минута, а максимально допустимое — 2 часа. Если выходные данные большого двоичного объекта имеют частоту шаблона пути, время ожидания не может быть выше диапазона времени секции.

  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}",
          }
          ],

Следующие шаги