Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden veelvoorkomende problemen met Azure Stream Analytics invoerverbindingen beschreven, hoe u deze problemen kunt oplossen en hoe u deze kunt corrigeren. Problemen die worden behandeld, zijn onder andere deserialisatiefouten van onjuiste gebeurtenissen, Event Hubs-ontvangerslimieten, wijzigingen in het aantal partities en IoT Hub lezerlimieten.
Voor veel stappen voor probleemoplossing moet u resourcelogboeken inschakelen voor uw Stream Analytics-taak. Als u geen resourcelogboeken hebt ingeschakeld, raadpleegt u Problemen met Azure Stream Analytics oplossen met behulp van resourcelogboeken.
Taak ontvangt geen invoerevenementen
Controleer uw connectiviteit met invoer en uitvoer. Gebruik de knop Verbinding testen voor elke invoer en uitvoer.
Controleer uw invoergegevens:
Gebruik de knop Voorbeeldgegevens voor elke invoer. Download de voorbeeldgegevens van de invoer.
Inspecteer de voorbeeldgegevens om inzicht te hebben in het schema en de gegevenstypen.
Controleer Azure Event Hubs metrische gegevens om ervoor te zorgen dat gebeurtenissen worden verzonden. Berichtmetriek moet hoger zijn dan nul als Event Hubs berichten ontvangt.
Zorg ervoor dat u een tijdsbereik hebt geselecteerd in het invoervoorbeeld. Kies Tijdsbereik selecteren en voer een voorbeeldduur in voordat u de query test.
Important
Voor Azure Stream Analytics taken die niet in het netwerk zijn geïnjecteerd, vertrouwt u niet op het bron-IP-adres van verbindingen die afkomstig zijn van Stream Analytics. Dit kunnen openbare of privé-IP-adressen zijn, afhankelijk van service-infrastructuurbewerkingen die van tijd tot tijd plaatsvinden.
Onjuiste invoergebeurtenissen veroorzaken deserialisatiefouten
Deserialisatieproblemen treden op wanneer de invoerstroom van uw Stream Analytics-taak ongeldige berichten bevat. Een ontbrekend haakje of accolade in een JSON-object of een onjuiste tijdstempelnotatie in het tijdveld kan bijvoorbeeld leiden tot een onjuist opgemaakt bericht.
Wanneer een Stream Analytics-taak een ongeldig opgemaakt bericht uit een invoerbron ontvangt, negeert deze het bericht en ontvangt u een waarschuwing. Er wordt een waarschuwingssymbool weergegeven op de tegel Invoer van uw Stream Analytics-taak. Het waarschuwingssymbool bestaat zolang de taak actief is.
Schakel resourcelogboeken in om de details weer te geven van de fout en van het bericht (inhoud) dat de fout heeft veroorzaakt. Er zijn meerdere redenen waarom deserialisatiefouten kunnen optreden. Zie Invoergegevensfouten voor meer informatie over specifieke deserialisatiefouten. Als resourcelogboeken niet zijn ingeschakeld, wordt er een korte melding weergegeven in de Azure-portal.
Als de nettolading van het bericht groter is dan 32 kB of een binaire indeling heeft, voert u de CheckMalformedEvents.cs code uit die beschikbaar is in de opslagplaats met voorbeelden van GitHub. Met deze code wordt de partitie-id-offset gelezen en worden de gegevens die zich op die offset bevinden weergegeven.
Andere veelvoorkomende oorzaken van fouten bij het deserialiseren van invoer zijn:
- Een kolom met een geheel getal met een waarde die groter is dan
9223372036854775807. - Tekenreeksen in plaats van een matrix met objecten of door lijnen gescheiden objecten. Geldig voorbeeld:
[{'a':1}]. Ongeldig voorbeeld:"'a' :1". - Een door Event Hubs vastgelegde blob in Avro-indeling die als invoer in uw taak wordt gebruikt.
- Twee kolommen in één invoergebeurtenis die alleen verschillen in het geval, zoals
column1enCOLUMN1.
Wijzigingen in het aantal Event Hub-partities
Wanneer het aantal partities van een Event Hub wordt gewijzigd terwijl een Stream Analytics-taak wordt uitgevoerd, mislukt de taak met de volgende fout:
Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
U kunt dit probleem oplossen door de Stream Analytics-taak te stoppen en opnieuw te starten, zodat het aantal nieuwe partities kan worden gedetecteerd.
Taak overschrijdt het maximum aantal Event Hubs-ontvangers
Een aanbevolen procedure voor het gebruik van Event Hubs is het gebruik van meerdere consumentengroepen voor schaalbaarheid van taken. Het aantal lezers in de Stream Analytics-taak voor een specifieke invoer is van invloed op het aantal lezers in één consumentengroep.
Het exacte aantal ontvangers is gebaseerd op interne implementatiedetails voor de uitschaaltopologielogica. Het getal wordt niet extern weergegeven. Het aantal lezers kan wijzigen wanneer een taak wordt gestart of bijgewerkt.
Het volgende foutbericht wordt weergegeven wanneer het aantal ontvangers het maximum overschrijdt. Het bericht bevat een lijst met bestaande verbindingen met Event Hubs onder een consumentengroep. De tag AzureStreamAnalytics geeft aan dat de verbindingen afkomstig zijn van een Azure streamingservice.
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
Wanneer het aantal lezers tijdens een taakupgrade verandert, worden tijdelijke waarschuwingen naar auditlogboeken geschreven. Stream Analytics-taken herstellen automatisch van deze tijdelijke problemen.
Voer de volgende stappen uit om een nieuwe consumentengroep toe te voegen aan uw Event Hubs-exemplaar:
Meld u aan bij het Azure-portaal.
Zoek uw Event Hub.
Selecteer Event Hubs onder de kop Entiteiten.
Selecteer de Event Hub op naam.
Selecteer op de pagina Event Hubs Instance onder de kop Entiteiten de optie Consumentengroepen. Er wordt een consumentengroep met de naam $Default weergegeven.
Selecteer + Consumentengroep om een nieuwe consumentengroep toe te voegen.
Wanneer u de invoer in de Stream Analytics-taak hebt gemaakt om naar de Event Hub te verwijzen, hebt u daar de consumentengroep opgegeven. Event Hubs gebruikt $Default als er geen consumentengroep is opgegeven. Nadat u een consumentengroep hebt gemaakt, bewerkt u de Event Hub-invoer in de Stream Analytics-taak en geeft u de naam van de nieuwe consumentengroep op.
Lezers per partitie overschrijden de Limiet voor Event Hubs
Als de syntaxis van uw streamingquery meerdere keren verwijst naar dezelfde resource voor Event Hub-invoer, kan de taakengine meerdere lezers per query uit dezelfde consumentengroep gebruiken. Wanneer er te veel verwijzingen naar dezelfde consumentengroep zijn, kan de taak de limiet van vijf overschrijden en een fout veroorzaken. In die gevallen kunt u verder opsplitsen door meerdere invoerbronnen over meerdere afnemersgroepen te gebruiken.
Scenario's waarin het aantal lezers per partitie de limiet van de Event Hubs van vijf overschrijdt, zijn:
Meerdere
SELECTinstructies: Als u meerdereSELECTinstructies gebruikt die verwijzen naar dezelfde Event Hub-invoer, zorgt elkeSELECTinstructie ervoor dat er een nieuwe ontvanger wordt gemaakt.UNION: Wanneer u gebruiktUNION, is het mogelijk om meerdere invoerwaarden te hebben die verwijzen naar dezelfde Event Hub en consumentengroep.SELF JOIN: Wanneer u eenSELF JOINbewerking gebruikt, is het mogelijk om meerdere keren naar dezelfde Event Hub te verwijzen.
Met de volgende aanbevolen procedures kunt u scenario's beperken waarin het aantal lezers per partitie de Limiet van vijf Event Hubs overschrijdt.
Splits uw query in meerdere stappen met behulp van een WITH-component
De WITH component geeft een tijdelijke benoemde resultatenset op waarnaar een FROM component in de query kan verwijzen. U definieert de WITH clausule in de uitvoeringscontext van één SELECT instructie.
Bijvoorbeeld, in plaats van deze query:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Gebruik deze query:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Zorg ervoor dat invoer wordt gebonden aan verschillende consumentengroepen
Voor query's waarin drie of meer invoergegevens zijn verbonden met dezelfde Event Hubs-consumentengroep, maakt u afzonderlijke consumentengroepen. Voor deze taak is het maken van extra Stream Analytics-invoer vereist.
Afzonderlijke invoer maken met verschillende consumentengroepen
U kunt afzonderlijke invoer maken met verschillende consumentengroepen voor dezelfde Event Hub. In het volgende voorbeeld van een UNION query verwijzen InputOne en InputTwo naar dezelfde Event Hubs-bron. Elke query kan afzonderlijke invoer hebben met verschillende consumentengroepen. De UNION query is slechts één voorbeeld.
WITH
DataOne AS
(
SELECT * FROM InputOne
),
DataTwo AS
(
SELECT * FROM InputTwo
),
SELECT foo FROM DataOne
UNION
SELECT foo FROM DataTwo
Lezers per partitie overschrijden de IoT Hub limiet
Stream Analytics-taken maken gebruik van het ingebouwde Event Hubs-compatibele eindpunt in Azure IoT Hub om verbinding te maken en gebeurtenissen te lezen uit IoT Hub. Als uw lezers per partitie de limieten van IoT Hub overschrijden, kunt u de oplossingen voor Event Hubs gebruiken om het probleem op te lossen. U kunt een consumentengroep voor het ingebouwde eindpunt maken via de IoT Hub portaleindpuntsessie of via de IoT Hub SDK.
Hulp krijgen
Probeer de Microsoft Q&A-pagina voor Azure Stream Analytics voor meer hulp.
Volgende stappen
- Inleiding tot Azure Stream Analytics
- Frauduleuze gespreksgegevens analyseren met Stream Analytics en resultaten visualiseren in een Power BI-dashboard
- Een Azure Stream Analytics-taak schalen om de doorvoer te verhogen
- Referentie voor de querytaal van Azure Stream Analytics
- AZURE STREAM ANALYTICS Management REST API