Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive i problemi comuni relativi alle connessioni di input di Analisi di flusso di Azure, come risolverli e come correggerli. Tra i problemi trattati figurano errori di deserializzazione dovuti a eventi non validi, limiti dei ricevitori di Event Hubs, modifiche al numero di partizioni e limiti dei lettori di hub IoT.
Molti passaggi per la risoluzione dei problemi richiedono l'abilitazione dei log delle risorse per il processo di Analisi di flusso. Se i log delle risorse non sono abilitati, vedere Risolvere i problemi Analisi di flusso di Azure usando i log delle risorse.
Il processo non riceve eventi di input
Verifica la connettività di ingressi e uscite. Usa il pulsante Testa connessione per ogni input e output.
Esamina i dati di input:
Usare il pulsante Dati di esempio per ogni input. Scarica i dati di input di esempio.
Esaminare i dati di esempio per comprendere lo schema e i tipi di dati.
Controllare le metriche di Hub eventi di Azure per assicurarsi che gli eventi siano inviati. Le metriche dei messaggi devono essere maggiori di zero se Hub eventi riceve messaggi.
Assicurarsi di aver selezionato un intervallo di tempo nell'anteprima di input. Scegliere Seleziona intervallo di tempo e quindi immettere una durata di esempio prima di testare la query.
Importante
Per i processi di Analisi di flusso di Azure che non sono inseriti nella rete, non fate affidamento in nessun modo sull'indirizzo IP di origine delle connessioni provenienti da Stream Analytics. Possono essere indirizzi IP pubblici o privati, a seconda delle operazioni dell'infrastruttura del servizio che si verificano di tanto in tanto.
Gli eventi di input in formato non valido causano errori di deserializzazione
I problemi di deserializzazione si verificano quando il flusso di input del processo di Stream Analytics contiene messaggi non validi. Ad esempio, una parentesi mancante o una parentesi graffa in un oggetto JSON o un formato timestamp non corretto nel campo dell'ora può causare un messaggio in formato non valido.
Quando un processo di Analisi di flusso riceve un messaggio in formato non valido da un input, elimina il messaggio e invia una notifica con un avviso. Nel riquadro Inputs del processo di Analisi di flusso viene visualizzato un simbolo di avviso. Il simbolo di avviso è presente finché il processo è in esecuzione.
Abilitare i log delle risorse per visualizzare i dettagli dell'errore e il messaggio (payload) che ha causato l'errore. Esistono diversi motivi per cui possono verificarsi errori di deserializzazione. Per altre informazioni sugli errori di deserializzazione specifici, vedere Errori di dati di input. Se i log delle risorse non sono abilitati, viene visualizzata una breve notifica nel portale di Azure.
Se il payload del messaggio è maggiore di 32 KB o è in formato binario, eseguire il codice CheckMalformedEvents.cs disponibile nel repository degli esempi di GitHub. Questo codice legge l'offset dell'ID partizione e stampa i dati che si trovano in tale offset.
Altri motivi comuni per gli errori di deserializzazione di input includono:
- Colonna integer con un valore maggiore di
9223372036854775807. - Stringhe anziché una matrice di oggetti o oggetti separati da righe. Esempio valido:
[{'a':1}]. Esempio non valido:"'a' :1". - Un blob di acquisizione di Event Hubs in formato Avro usato come input per il processo.
- Due colonne in un singolo evento di input che differiscono solo nel caso, ad esempio
column1eCOLUMN1.
Modifiche al numero di partizioni dell'hub eventi
Quando il numero di partizioni di un hub eventi cambia durante l'esecuzione di un processo di Analisi di flusso, il processo ha esito negativo con l'errore seguente:
Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
Per risolvere questo problema, arrestare e riavviare il processo di Analisi di flusso in modo che possa rilevare il nuovo numero di partizioni.
Il processo supera il numero massimo di ricevitori di Event Hubs
Una procedura consigliata per usare Event Hubs prevede l'uso di più gruppi di consumer per la scalabilità dei processi. Il numero di lettori nel processo di Analisi di flusso per un input specifico influisce sul numero di lettori in un singolo gruppo di consumer.
Il numero esatto di ricevitori dipende dai dettagli interni di implementazione della logica di topologia scale-out. Il numero non è esposto esternamente. Il numero di lettori può cambiare quando un processo viene avviato o aggiornato.
Il messaggio di errore seguente viene visualizzato quando il numero di ricevitori supera il valore massimo. Il messaggio contiene un elenco delle connessioni esistenti a Event Hubs all’interno di un gruppo di consumer. Il tag AzureStreamAnalytics indica che le connessioni provengono da un servizio di 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 il numero di lettori cambia durante l'aggiornamento di un job, gli avvisi temporanei vengono registrati nei log di audit. I processi di Analisi di flusso vengono ripristinati automaticamente da questi problemi temporanei.
Per aggiungere un nuovo gruppo di consumer nell'istanza di Hub eventi, seguire questa procedura:
Accedere al portale di Azure.
Individua l'hub per eventi.
Nell'intestazione Entità selezionare Hub eventi.
Selezionare l'hub eventi in base al nome.
Nella pagina Istanza di Hub eventi, sotto l'intestazione Entità, selezionare Gruppi di consumer. Viene elencato un gruppo di consumer con il nome $Default .
Seleziona + Gruppo consumer per aggiungere un nuovo gruppo consumer.
Quando hai creato l'input nel processo di Stream Analytics che punta all'hub eventi, hai specificato lì il gruppo di utilizzo. Hub eventi usa $Default se non è specificato alcun gruppo di consumer. Dopo aver creato un gruppo di consumer, modifica l'input dell'Hub eventi nel processo di Stream Analytics e specifica il nome del nuovo gruppo di consumer.
I lettori per partizione superano il limite di Event Hubs
Se la sintassi delle query di streaming fa riferimento più volte alla stessa risorsa per l'input dell'hub eventi, il motore di processi può usare più lettori per ogni query dello stesso gruppo di consumer. Quando sono presenti troppi riferimenti allo stesso gruppo di consumer, il processo può superare il limite di cinque e generare un errore. In tali circostanze, è possibile dividere ulteriormente usando più input tra più gruppi di consumer.
Gli scenari in cui il numero di lettori per partizione supera il limite di cinque di Hub eventi includono:
Istruzioni
SELECTmultiple: se si usano più istruzioniSELECTche fanno riferimento allo stesso input di Hub eventi, ogni istruzioneSELECTcomporta la creazione di un nuovo ricevitore.UNION: Quando si utilizzaUNION, è possibile avere più input che fanno riferimento allo stesso hub di eventi e allo stesso gruppo di consumer.SELF JOIN: quando si usa un'operazioneSELF JOIN, è possibile fare riferimento più volte allo stesso hub eventi.
Le procedure consigliate seguenti consentono di attenuare gli scenari in cui il numero di lettori per partizione supera il limite di cinque di Hub eventi.
Suddividere la query in più passaggi usando una clausola WITH
La WITH clausola specifica un set di risultati denominato temporaneo a cui può fare riferimento una FROM clausola nella query. Si definisce la clausola WITH nell'ambito di esecuzione di una singola istruzione SELECT.
Ad esempio, anziché questa query:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Usa questa query:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Assicurarsi che gli input vengano associati a gruppi di consumer diversi
Per le query in cui tre o più input sono connessi allo stesso gruppo di consumer di Hub eventi, creare gruppi di consumer separati. Questa attività richiede la creazione di input aggiuntivi di Analisi di flusso.
Creare input separati con gruppi di consumer diversi
È possibile creare input separati con gruppi di consumer diversi per lo stesso hub eventi. Nell'esempio seguente di query UNION, InputOne e InputTwo fanno riferimento alla stessa origine di Event Hubs. Qualsiasi query può avere input separati associati a gruppi di utenti diversi. La UNION query è solo un esempio.
WITH
DataOne AS
(
SELECT * FROM InputOne
),
DataTwo AS
(
SELECT * FROM InputTwo
),
SELECT foo FROM DataOne
UNION
SELECT foo FROM DataTwo
I lettori per partizione superano il limite previsto da hub IoT
I processi di Stream Analytics usano l'endpoint compatibile con Hub eventi integrato in hub IoT di Azure per connettersi a hub IoT e leggere gli eventi. Se i lettori per partizione superano i limiti di hub IoT, è possibile usare le soluzioni per Event Hubs per risolvere il problema. È possibile creare un gruppo di consumer per l'endpoint predefinito tramite la sessione endpoint del portale di hub IoT o tramite hub IoT SDK.
Come ottenere assistenza
Per un'ulteriore assistenza, provare la pagina Domande e risposte Microsoft per Analisi di flusso di Azure.
Passaggi successivi
- Introduzione ad Analisi dei flussi di Azure
- Analizzare i dati di chiamate fraudolente con Analisi di flusso e visualizzare i risultati in un dashboard di Power BI
- Ridimensionare un processo di Analisi di flusso di Azure per aumentare la velocità effettiva
- Informazioni di riferimento sul linguaggio di query di Analisi di flusso di Azure
- API REST di gestione di Analisi di flusso di Azure