Risolvere i problemi dei ricevitori dell'hub eventi in Analisi di flusso di AzureTroubleshoot Event Hub receivers in Azure Stream Analytics

È possibile usare gli hub eventi di Analisi di flusso di Azure per inserire o estrarre dati da un processo.You can use Azure Event Hubs in Azure Stream Analytics to ingest or output data from a job. Una procedura consigliata per l'utilizzo dell'hub eventi è usare più gruppi di consumer in modo da garantire la scalabilità del processo.A best practice for using Event Hubs is to use multiple consumer groups, to ensure job scalability. Uno dei motivi è che il numero di lettori del processo di Analisi di flusso per uno specifico input influisce sul numero dei lettori di un singolo gruppo di consumer.One reason is that the number of readers in the Stream Analytics job for a specific input affects the number of readers in a single consumer group. Il numero preciso di ricevitori si basa sui dettagli di implementazione interna per la logica della topologia con scalabilità orizzontale.The precise number of receivers is based on internal implementation details for the scale-out topology logic. Il numero di ricevitori non viene esposto esternamente.The number of receivers is not exposed externally. Il numero di lettori può cambiare al momento di inizio del processo o durante gli aggiornamenti del processo.The number of readers can change either at the job start time or during job upgrades.

L'errore mostrato quando il numero di ricevitori supera il massimo è: The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hub Receivers.The error shown when number of receivers exceeds the maximum is: The streaming job failed: Stream Analytics job has validation errors: Job will exceed the maximum amount of Event Hub Receivers.

Nota

Quando il numero di lettori cambia durante un aggiornamento del processo, vengono scritti avvisi temporanei nei log di controllo.When the number of readers changes during a job upgrade, transient warnings are written to audit logs. I processi di Analisi di flusso vengono ripristinati automaticamente da questi problemi temporanei.Stream Analytics jobs automatically recover from these transient issues.

Aggiungere un gruppo di consumer negli hub eventiAdd a consumer group in Event Hubs

Per aggiungere un nuovo gruppo di consumer all'istanza dell'hub eventi, seguire questa procedura:To add a new consumer group in your Event Hubs instance, follow these steps:

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Individuare gli hub eventi.Locate your Event Hubs.

  3. Selezionare Hub eventi nell'intestazione Entità.Select Event Hubs under the Entities heading.

  4. Selezionare il nome dell'hub eventi.Select the Event Hub by name.

  5. Nella pagina Istanza di Hub eventi selezionare Gruppi di consumer nell'intestazione Entità.On the Event Hubs Instance page, under the Entities heading, select Consumer groups. Viene elencato un gruppo di consumer denominato $Default.A consumer group with name $Default is listed.

  6. Selezionare + Gruppo di consumer per aggiungere un nuovo gruppo di consumer.Select + Consumer Group to add a new consumer group.

    Aggiungere un gruppo di consumer negli hub eventi

  7. Quando l'utente ha creato l'input in Analisi di flusso affinché puntasse all'hub eventi, ha specificato il gruppo di consumer.When you created the input in the Stream Analytics job to point to the Event Hub, you specified the consumer group there. $Default viene usato quando non è stato specificato alcun gruppo di consumer.$Default is used when none is specified. Dopo aver creato un nuovo gruppo di consumer, modificare l'input dell'hub eventi nel processo Analisi di flusso e specificare il nome del nuovo gruppo di consumer.Once you create a new consumer group, edit the Event Hub input in the Stream Analytics job and specify the name of the new consumer group.

Il numero di lettori per partizione supera il limite di cinque hub eventiNumber of readers per partition exceeds Event Hubs limit of five

Se la sintassi della query del flusso fa riferimento più volte alla stessa risorsa di input dell'hub di eventi, il motore del processo può usare più lettori per ogni query da quello stesso gruppo di consumer.If your streaming query syntax references the same input Event Hub resource multiple times, the job engine can use multiple readers per query from that same consumer group. Quando ci sono troppi riferimenti allo stesso gruppo di consumer, il processo può superare il limite di cinque e generare un errore.When there are too many references to the same consumer group, the job can exceed the limit of five and thrown an error. In questo caso è possibile creare altre suddivisioni usando più input in più gruppi di consumer servendosi della soluzione descritta nella sezione seguente.In those circumstances, you can further divide by using multiple inputs across multiple consumer groups using the solution described in the following section.

Gli scenari in cui il numero di lettori per ogni partizione supera il limite di cinque hub eventi comprendono i seguenti:Scenarios in which the number of readers per partition exceeds the Event Hubs limit of five include the following:

  • Più istruzioni SELECT: se si usano più istruzioni SELECT che fanno riferimento allo stesso input dell'hub eventi, ogni istruzione SELECT fa sì che venga creato un nuovo ricevitore.Multiple SELECT statements: If you use multiple SELECT statements that refer to same event hub input, each SELECT statement causes a new receiver to be created.
  • UNION: quando si usa UNION, è possibile avere più input che si riferiscono allo stesso hub eventi e gruppo di consumer.UNION: When you use a UNION, it's possible to have multiple inputs that refer to the same event hub and consumer group.
  • SELF JOIN: quando si usa un'operazione SELF JOIN è possibile fare riferimento allo stesso hub eventi più volte.SELF JOIN: When you use a SELF JOIN operation, it's possible to refer to the same event hub multiple times.

SoluzioneSolution

Le procedure consigliate seguenti possono aiutare a mitigare gli scenari in cui il numero di lettori per ogni partizione supera il limite di cinque hub eventi.The following best practices can help mitigate scenarios in which the number of readers per partition exceeds the Event Hubs limit of five.

Suddividere la query in più passaggi usando una clausola WITHSplit your query into multiple steps by using a WITH clause

La clausola WITH specifica un set di risultati con nome temporaneo a cui è possibile fare riferimento mediante una clausola FROM nella query.The WITH clause specifies a temporary named result set that can be referenced by a FROM clause in the query. La clausola WITH viene definita nell'ambito di esecuzione di una singola istruzione SELECT.You define the WITH clause in the execution scope of a single SELECT statement.

Ad esempio, invece di questa query:For example, instead of this query:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Usare questa query:Use this query:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Assicurarsi che gli input siano associati a gruppi di consumer diversiEnsure that inputs bind to different consumer groups

Per le query in cui tre o più input sono connessi allo stesso gruppo di consumer di hub eventi, creare gruppi di consumer separati.For queries in which three or more inputs are connected to the same Event Hubs consumer group, create separate consumer groups. Ciò richiede la creazione di input di Analisi di flusso aggiuntivi.This requires the creation of additional Stream Analytics inputs.

Passaggi successiviNext steps