Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve problemas comuns com as ligações de entrada do Azure Stream Analytics, como resolver esses problemas e como corrigi-los. As questões abordadas incluem erros de desserialização devido a eventos malformados, limites de recetores nos Event Hubs, alterações na contagem de partições e limites de leitores do Hub IoT.
Muitos passos de resolução de problemas exigem que ative os registos de recursos para o seu trabalho de Análise de Fluxos. Se não tiver os registos de recursos ativados, consulte Resolver problemas do Azure Stream Analytics com registos de recursos.
O trabalho não recebe eventos de entrada
Verifica a tua ligação às entradas e saídas. Use o botão de Teste de Ligação para cada entrada e saída.
Analise os seus dados de entrada:
Use o botão Dados de Exemplo para cada entrada. Descarregue os dados de amostra de entrada.
Inspecione os dados de amostra para compreender o esquema e os tipos de dados.
Verifique as métricas do Hubs de Eventos do Azure para garantir que os eventos estão a ser enviados. As métricas de mensagens devem ser superiores a zero se o Event Hubs estiver a receber mensagens.
Certifique-se de que selecionou um intervalo de tempo na pré-visualização de entrada. Escolha Selecionar intervalo de tempo e depois introduza uma duração de amostra antes de testar a sua consulta.
Importante
Para empregos de Azure Stream Analytics que não sejam injetados por rede, não confie de forma alguma no endereço IP de origem das ligações provenientes de Stream Analytics. Podem ser IPs públicos ou privados, dependendo das operações da infraestrutura de serviço que ocorrem de tempos a tempos.
Eventos de entrada mal formados causam erros de desserialização
Os problemas de desserialização ocorrem quando o fluxo de entrada do seu trabalho de Análise de Fluxos contém mensagens malformadas. Por exemplo, uma falta de parêntese ou coltese num objeto JSON, ou um formato de carimbo temporal incorreto no campo de tempo, pode causar uma mensagem deformada.
Quando um trabalho do Stream Analytics recebe uma mensagem malformada de uma origem de entrada, descarta a mensagem e notifica-o com um aviso. Um símbolo de aviso aparece no mosaico de Inputs da sua tarefa do Stream Analytics. O símbolo de aviso existe enquanto o trabalho estiver em estado de funcionamento.
Ative os registos de recursos para visualizar os detalhes do erro e da mensagem (payload) que causou o erro. Existem várias razões pelas quais podem ocorrer erros de desserialização. Para mais informações sobre erros específicos de desserialização, veja Erros de dados de entrada. Se os registos de recursos não estiverem ativados, aparece uma breve notificação no portal do Azure.
Se a carga útil da mensagem for superior a 32 KB ou estiver em formato binário, execute o código CheckMalformedEvents.cs disponível no repositório de GitHub exemplos. Este código lê o deslocamento do identificador da partição e imprime os dados localizados nesse deslocamento.
Outras razões comuns para erros de desserialização de entrada incluem:
- Uma coluna inteira que tenha um valor maior que
9223372036854775807. - Strings em vez de um array de objetos ou objetos separados por linhas. Exemplo válido:
[{'a':1}]. Exemplo inválido:"'a' :1". - Um blob de captura do Event Hubs em formato Avro, utilizado como entrada para o seu trabalho.
- Duas colunas num único evento de entrada que diferem apenas no caso, como
column1eCOLUMN1.
Alterações na contagem de partições do hub de eventos
Quando a contagem de partições de um hub de eventos muda enquanto um trabalho de Stream Analytics está a correr, o trabalho falha com o seguinte erro:
Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
Para resolver este problema, pare e reinicie o trabalho Stream Analytics para que possa detetar a nova contagem de partições.
A tarefa excede o número máximo de recetores dos Event Hubs
Uma boa prática para usar Event Hubs é utilizar múltiplos grupos de consumidores para escalabilidade de trabalhos. O número de leitores no trabalho de Análise de Fluxos para uma entrada específica afeta o número de leitores num único grupo de consumidores.
O número exato de recetores depende de pormenores internos de implementação da lógica de topologia de scale-out. O número não é exposto externamente. O número de leitores pode mudar quando um trabalho começa ou é atualizado.
A seguinte mensagem de erro aparece quando o número de recetores excede o máximo. A mensagem inclui uma lista de ligações existentes ao Event Hubs num grupo de consumidores. A etiqueta AzureStreamAnalytics indica que as ligações são de um serviço de streaming 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_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1,
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1,
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1,
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1,
AzureStreamAnalytics_a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1_1.
Note
Quando o número de leitores se altera durante a atualização de uma tarefa, são registados avisos transitórios nos registos de auditoria. As tarefas do Stream Analytics recuperam automaticamente destes problemas transitórios.
Para adicionar um novo grupo de consumidores na sua instância do Event Hubs, siga estes passos:
Inicie sessão no portal do Azure.
Localize o seu centro de eventos.
No título Entidades , selecione Centros de Eventos.
Selecione o hub de eventos pelo nome.
Na página Instância dos Hubs de Eventos, sob o cabeçalho Entidades, selecione Grupos de consumidores. Está listado um grupo de consumidores com o nome $Default .
Selecione + Grupo de consumidores para adicionar um novo grupo de consumidores.
Quando criou a entrada na tarefa do Stream Analytics de modo a apontar para o hub de eventos, especificou nessa altura o respetivo grupo de consumidores. O Event Hubs utiliza $Default se não for especificado nenhum grupo de consumidores. Depois de criar um grupo de consumidores, edite a entrada do hub de eventos no trabalho de Análise de Fluxos e especifique o nome do novo grupo de consumidores.
O número de leitores por partição ultrapassa o limite dos Event Hubs
Se a sintaxe da sua consulta de streaming referenciar várias vezes o mesmo recurso para entrada do Hub de Eventos, o motor de tarefas pode usar vários leitores por consulta a partir desse mesmo grupo de consumidores. Quando há demasiadas referências ao mesmo grupo de consumidores, a tarefa pode ultrapassar o limite de cinco e originar um erro. Nessas circunstâncias, pode subdividir ainda mais, usando múltiplas entradas em vários grupos de consumidores.
Cenários em que o número de leitores por partição excede o limite de cinco dos Event Hubs incluem:
Múltiplas
SELECTinstruções: Se usar múltiplasSELECTinstruções que se refirem à mesma entrada do event hub, cadaSELECTinstrução faz com que um novo recetor seja criado.UNION: Quando usaUNION, é possível ter múltiplas entradas que se referem ao mesmo hub de eventos e grupo de consumidores.SELF JOIN: Quando usa umaSELF JOINoperação, é possível consultar o mesmo hub de eventos várias vezes.
As seguintes boas práticas podem ajudar a mitigar cenários em que o número de leitores por partição excede o limite de cinco dos Event Hubs.
Divida a sua consulta em vários passos usando uma cláusula WITH
A WITH cláusula especifica um conjunto temporário de resultados nomeado que uma FROM cláusula na consulta pode referenciar. Define a cláusula WITH no contexto de execução de uma única instrução SELECT.
Por exemplo, em vez desta consulta:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Use esta consulta:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Assegure que os inputs se relacionam com diferentes grupos de consumidores
Para consultas em que três ou mais entradas estão ligadas ao mesmo grupo de consumidores dos Event Hubs, crie grupos de consumidores separados. Esta tarefa requer a criação de inputs adicionais de Stream Analytics.
Crie entradas separadas com diferentes grupos de consumidores
Pode criar entradas separadas com diferentes grupos de consumidores para o mesmo hub de eventos. No exemplo seguinte de uma UNION consulta, InputOne e InputTwo referem-se à mesma fonte dos Event Hubs. Qualquer consulta pode ter inputs separados associados a 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
O número de leitores por partição ultrapassa o limite do Hub IoT
Os trabalhos do Stream Analytics utilizam o ponto final compatível com os Event Hubs incorporado no Hub IoT do Azure para estabelecer ligação e ler eventos do Hub IoT. Se os seus leitores por partição excederem os limites do Hub IoT, pode usar as soluções dos Event Hubs para resolver o problema. Pode criar um grupo de consumidores para o endpoint integrado através da sessão do portal Hub IoT ou através do Hub IoT SDK.
Obter ajuda
Para obter mais assistência, tente a página de Perguntas e Respostas da Microsoft para o Azure Stream Analytics.
Passos seguintes
- Introdução ao Azure Stream Analytics
- Analise dados de chamadas fraudulentas com o Stream Analytics e visualize resultados em um painel do Power BI
- Dimensionar um trabalho do Azure Stream Analytics para aumentar a taxa de transferência
- Referência da Linguagem de Consulta do Azure Stream Analytics
- API REST de Gerenciamento do Azure Stream Analytics