Resolver problemas em ligações de entrada

Este artigo descreve problemas comuns com conexões de entrada do Azure Stream Analytics, como solucionar esses problemas e como corrigi-los.

Muitas etapas de solução de problemas exigem que você ative os logs de recursos para seu trabalho do Stream Analytics. Se você não tiver os logs de recursos ativados, consulte Solucionar problemas do Azure Stream Analytics usando logs de recursos.

O trabalho não recebe eventos de entrada

  1. Verifique sua conectividade com entradas e saídas. Use o botão Testar conexão para cada entrada e saída.

  2. Examine seus dados de entrada:

    1. Use o botão Dados de exemplo para cada entrada. Faça o download dos dados de exemplo de entrada.

    2. Inspecione os dados de exemplo para entender o esquema e os tipos de dados.

    3. Verifique as métricas dos Hubs de Eventos do Azure para garantir que os eventos estão sendo enviados. As métricas de mensagens devem ser maiores que zero se os Hubs de Eventos estiverem recebendo mensagens.

  3. Certifique-se de que selecionou um intervalo de tempo na pré-visualização de entrada. Escolha Selecionar intervalo de tempo e insira uma amostra de duração antes de testar sua consulta.

Importante

Para trabalhos do Azure Stream Analytics que não são injetados na rede, não confie no endereço IP de origem das conexões provenientes do Stream Analytics de forma alguma. Podem ser IPs públicos ou privados, dependendo das operações de infraestrutura de serviço que acontecem de tempos em tempos.

Eventos de entrada malformados causam erros de desserialização

Problemas de desserialização acontecem quando o fluxo de entrada do seu trabalho do Stream Analytics contém mensagens malformadas. Por exemplo, um parêntese ou chave ausente em um objeto JSON, ou um formato de carimbo de data/hora incorreto no campo de tempo, pode causar uma mensagem malformada.

Quando um trabalho do Stream Analytics recebe uma mensagem malformada de uma entrada, ele solta a mensagem e notifica você com um aviso. Um símbolo de aviso aparece no bloco Entradas do seu trabalho do Stream Analytics. O símbolo de aviso existe desde que o trabalho esteja em um estado de execução.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Ative os logs de recursos para exibir os detalhes do erro e a mensagem (carga útil) que causou o erro. Há várias razões pelas quais erros de desserialização podem ocorrer. Para obter mais informações sobre erros específicos de desserialização, consulte Erros de dados de entrada. Se os logs de recursos não estiverem ativados, uma breve notificação será exibida no portal do Azure.

Screenshot that shows a warning notification about input details.

Se a carga útil da mensagem for maior que 32 KB ou estiver em formato binário, execute o código CheckMalformedEvents.cs disponível no repositório de amostras do GitHub. Este código lê o deslocamento de ID da partição e imprime os dados localizados nesse deslocamento.

Outras razões comuns para erros de desserialização de entrada são:

  • Uma coluna inteira que tem um valor maior que 9223372036854775807.
  • Strings em vez de uma matriz de objetos ou objetos separados por linha. Exemplo válido: *[{'a':1}]*. Exemplo inválido: *"'a' :1"*.
  • Usando um blob de captura de Hubs de Eventos no formato Avro como entrada em seu trabalho.
  • Ter duas colunas em um único evento de entrada que diferem apenas em maiúsculas e minúsculas. Exemplo: *column1* e *COLUMN1*.

Alterações na contagem de partições

A contagem de partições dos hubs de eventos pode ser alterada. Se a contagem de partições de um hub de eventos for alterada, você precisará parar e reiniciar o trabalho do Stream Analytics.

O seguinte erro aparece quando a contagem de partições de um hub de eventos é alterada enquanto o trabalho está em execução: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

O trabalho excede o máximo de recetores de Hubs de Eventos

Uma prática recomendada para usar Hubs de Eventos é usar vários grupos de consumidores para escalabilidade de trabalho. O número de leitores no trabalho do Stream Analytics para uma entrada específica afeta o número de leitores em um único grupo de consumidores.

O número exato de recetores é baseado em detalhes de implementação interna para a lógica de topologia de expansão. O número não é exposto externamente. O número de leitores pode mudar quando um trabalho é iniciado ou atualizado.

A seguinte mensagem de erro aparece quando o número de recetores excede o máximo. A mensagem inclui uma lista de conexões existentes feitas a Hubs de Eventos em um grupo de consumidores. A marca AzureStreamAnalytics indica que as conexões são de um serviço de streaming do 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.

Nota

Quando o número de leitores muda durante uma atualização de trabalho, avisos transitórios são gravados em logs de auditoria. Os trabalhos do Stream Analytics se recuperam automaticamente desses problemas transitórios.

Para adicionar um novo grupo de consumidores na instância dos Hubs de Eventos, siga estas etapas:

  1. Inicie sessão no portal do Azure.

  2. Localize seu hub de eventos.

  3. No título Entidades, selecione Hubs de Eventos.

  4. Selecione o hub de eventos pelo nome.

  5. Na página Instância de Hubs de Eventos, sob o título Entidades, selecione Grupos de consumidores. Um grupo de consumidores com o nome $Default é listado.

  6. Selecione + Grupo de consumidores para adicionar um novo grupo de consumidores.

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

  7. Ao criar a entrada no trabalho do Stream Analytics para apontar para o hub de eventos, você especificou o grupo de consumidores lá. Os Hubs de Eventos usam $Default se nenhum grupo de consumidores for especificado. Depois de criar um grupo de consumidores, edite a entrada do hub de eventos no trabalho do Stream Analytics e especifique o nome do novo grupo de consumidores.

Os leitores por partição excedem o limite dos Hubs de Eventos

Se a sintaxe da consulta de streaming fizer referência ao mesmo recurso para entrada do hub de eventos várias vezes, o mecanismo de trabalho poderá usar vários leitores por consulta desse mesmo grupo de consumidores. Quando há muitas referências ao mesmo grupo de consumidores, o trabalho pode exceder o limite de cinco e lançar um erro. Nessas circunstâncias, você pode dividir ainda mais usando várias entradas em vários grupos de consumidores.

Os cenários em que o número de leitores por partição excede o limite de cinco Hubs de Eventos incluem:

  • Várias SELECT instruções: Se você usar várias SELECT instruções que se referem à mesma entrada do hub de eventos, cada SELECT instrução fará com que um novo recetor seja criado.

  • UNION: Quando você usa UNIONo , é possível ter várias entradas que se referem ao mesmo hub de eventos e grupo de consumidores.

  • SELF JOIN: Quando você usa uma SELF JOIN operação, é possível fazer referência ao mesmo hub de eventos várias vezes.

As práticas recomendadas a seguir podem ajudar a mitigar cenários em que o número de leitores por partição excede o limite de cinco Hubs de Eventos.

Divida sua consulta em várias etapas usando uma cláusula WITH

A WITH cláusula especifica um conjunto de resultados nomeado temporário que uma FROM cláusula na consulta pode referenciar. Você define a WITH cláusula no escopo de execução de uma única SELECT instrução.

Por exemplo, em vez desta consulta:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Utilize esta consulta:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Garantir que os inputs se ligam a diferentes grupos de consumidores

Para consultas nas quais três ou mais entradas estão conectadas ao mesmo grupo de consumidores de Hubs de Eventos, crie grupos de consumidores separados. Esta tarefa requer a criação de entradas adicionais do Stream Analytics.

Crie entradas separadas com diferentes grupos de consumidores

Você pode criar entradas separadas com diferentes grupos de consumidores para o mesmo hub de eventos. No exemplo a seguir de uma UNION consulta, InputOne e InputTwo referem-se à mesma fonte de Hubs de Eventos. Qualquer consulta pode ter entradas separadas com diferentes grupos de consumidores. A UNION consulta é apenas um exemplo.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

Os leitores por partição excedem o limite do Hub IoT

Os trabalhos do Stream Analytics usam o ponto de extremidade compatível com Hubs de Eventos interno no Hub IoT do Azure para conectar e ler eventos do Hub IoT. Se seus leitores por partição excederem os limites do Hub IoT, você poderá usar as soluções para Hubs de Eventos para resolvê-lo. Você pode criar um grupo de consumidores para o ponto de extremidade interno por meio da sessão de ponto de extremidade do portal do Hub IoT ou por meio do SDK do Hub IoT.

Obter ajuda

Para obter mais assistência, tente a página de Perguntas e Respostas da Microsoft para o Azure Stream Analytics.

Próximos passos