Устранение неполадок с входящими подключениями

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

Многие действия по устранению неполадок требуют включения журналов ресурсов для задания Stream Analytics. Если у вас нет журналов ресурсов, см. статью "Устранение неполадок Azure Stream Analytics с помощью журналов ресурсов".

Задание не получает входные события

  1. Проверьте подключение к входным и выходным данным. Используйте кнопку "Тест Подключение ion" для каждого входного и выходного данных.

  2. Проверьте входные данные:

    1. Нажмите кнопку Образцы данных для всех входных данных. Скачайте примеры входных данных.

    2. Проверьте эти примеры данных, чтобы определить схему и типы данных.

    3. Проверьте Центры событий Azure метрики, чтобы убедиться, что события отправляются. Метрики сообщений должны быть больше нуля, если служба "Центры событий" получает сообщения.

  3. Убедитесь, что в предварительном просмотре входных данных выбран диапазон времени. Щелкните Выбор диапазона времени и введите длительность выборки перед тестированием запроса.

Внимание

Для заданий Azure Stream Analytics, которые не внедряются в сеть, не полагаются на исходный IP-адрес подключений, поступающих из Stream Analytics каким-либо образом. Они могут быть общедоступными или частными IP-адресами в зависимости от операций инфраструктуры служб, которые происходят от времени.

Неправильные входные события вызывают ошибки десериализации

Проблемы десериализации возникают, когда входной поток задания Stream Analytics содержит неправильные сообщения. Например, отсутствующие скобки или фигурные скобки в объекте JSON или неправильный формат метки времени в поле времени могут вызвать неправильно сформированное сообщение.

Когда задание Stream Analytics получает сообщение неправильного формата из входного набора данных, это сообщение отклоняется, а пользователь получает предупреждение. На плитке "Входные данные" задания Stream Analytics отображается символ предупреждения. Символ предупреждения существует до тех пор, пока задание находится в состоянии выполнения.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Включите журналы ресурсов, чтобы просмотреть сведения об ошибке и сообщение (полезные данные), вызвавшее ошибку. Ошибки десериализации могут возникать по различным причинам. Дополнительные сведения об определенных ошибках десериализации см. в разделе "Входные ошибки данных". Если журналы ресурсов не включено, в портал Azure появится краткое уведомление.

Screenshot that shows a warning notification about input details.

Если полезные данные сообщения больше 32 КБ или в двоичном формате, запустите код CheckMalformedEvents.cs, доступный в репозитории примеров GitHub. Этот код считывает смещение идентификатора секции и выводит данные, расположенные в этом смещение.

Другие распространенные причины ошибок десериализации ввода:

  • Целый столбец, имеющий значение больше 9223372036854775807.
  • Строки вместо массива объектов или объектов, разделенных строками. Допустимый пример: *[{'a':1}]*. Недопустимый пример: *"'a' :1"*.
  • При использовании центров событий в качестве входных данных в задании используется большой двоичный объект в формате Avro.
  • Наличие двух столбцов в одном входном событии, имена которых отличаются только регистром. Пример: *column1* и *COLUMN1*.

Изменения количества секций

Можно изменить число секций центров событий. Если число секций концентратора событий изменено, необходимо остановить и перезапустить задание Stream Analytics.

Следующая ошибка возникает при изменении количества секций концентратора событий во время выполнения задания: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException

Задание превышает максимальное число приемников Центров событий

Мы рекомендуем использовать службу "Центры событий" с несколькими группами потребителей, чтобы поддерживать масштабируемость задания. Число модулей чтения в задании Stream Analytics для определенных входных данных влияет на число модулей чтения в одной группе потребителей.

Точное число приемников зависит от сведений о внутренней реализации логики топологии развертывания. Число не предоставляется внешним образом. Количество читателей может измениться при запуске или обновлении задания.

Следующее сообщение об ошибке появляется, когда максимальное число получателей превышает. Это сообщение содержит список существующих подключений, сделанных к Центрам событий в группе потребителей. Тег AzureStreamAnalytics указывает, что подключения относятся к службе потоковой передачи Azure.

The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hubs Receivers.

The following information may be helpful in identifying the connected receivers: Exceeded the maximum number of allowed receivers per partition in a consumer group which is 5. List of connected receivers – 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.

Примечание.

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

Чтобы добавить новую группу потребителей в экземпляр Центра событий, сделайте следующее.

  1. Войдите на портал Azure.

  2. Найдите концентратор событий.

  3. В разделе "Сущности" выберите Центры событий.

  4. Выберите концентратор событий по имени.

  5. На странице Экземпляр Центров событий под заголовком Сущности установите флажок Группы потребителей. Указана группа потребителей с именем $Default .

  6. Выберите +Группа потребителей, чтобы добавить новую группу потребителей.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

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

Читатели на секцию превышают ограничение Центров событий

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

В сценариях, в которых число читателей на секцию превышает ограничение Центров событий в пять:

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

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

  • SELF JOIN: при использовании SELF JOIN операции можно ссылаться на один концентратор событий несколько раз.

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

Разбиение запроса на несколько шагов с помощью предложения WITH

Предложение WITH указывает временный именованный результирующий набор, на который FROM может ссылаться предложение в запросе. Вы определяете WITH предложение в область выполнения одной SELECT инструкции.

Например, вместо этого запроса:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Используйте следующий запрос:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Привязка входных данных к разным группам потребителей

Создайте отдельные группы потребителей для запросов, в которых три или более наборов входных данных подключены к одной группе потребителей Центров событий. Для этой задачи требуется создание дополнительных входных данных Stream Analytics.

Создание отдельных входных данных для разных групп потребителей

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

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

Читатели на секцию превышают ограничение Центр Интернета вещей

Задания Stream Analytics используют встроенную конечную точку, совместимую с Центрами событий, в Центр Интернета вещей Azure для подключения и чтения событий из Центр Интернета вещей. Если читатели на секцию превышают ограничения Центр Интернета вещей, можно использовать решения для центров событий для ее разрешения. Вы можете создать группу потребителей для встроенной конечной точки с помощью сеанса конечной точки портала Центр Интернета вещей или с помощью пакета SDK Центр Интернета вещей.

Получить помощь

Дополнительные сведения см. на странице Microsoft Q&A для Azure Stream Analytics.

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