Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje běžné problémy se vstupními připojeními Azure Stream Analytics, jak tyto problémy vyřešit a jak je opravit. Mezi řešené problémy patří chyby deserializace způsobené chybně formátovanými událostmi, limity příjemců služby Event Hubs, změny počtu oddílů a limity čteček služby IoT Hub.
Mnoho kroků při řešení potíží vyžaduje, abyste pro svou úlohu Stream Analytics povolili protokoly prostředků. Pokud nemáte povolené protokoly prostředků, přečtěte si téma Řešení potíží Azure Stream Analytics pomocí protokolů prostředků.
Úloha nepřijímá vstupní události
Ověřte připojení ke vstupům a výstupům. Pro každý vstup a výstup použijte tlačítko Test připojení .
Prozkoumejte vstupní data:
Pro každý vstup použijte tlačítko Ukázková data . Stáhněte si vstupní ukázková data.
Prozkoumejte ukázková data, abyste porozuměli schématu a datovým typům.
Zkontrolujte Azure Event Hubs metriky a ujistěte se, že se odesílají události. Pokud služba Event Hubs přijímá zprávy, měla by být metrika zpráv větší než nula.
Ujistěte se, že jste ve vstupním náhledu vybrali časový rozsah. Zvolte Výběr časového rozsahu a pak před testováním dotazu zadejte ukázkovou dobu trvání.
Important
U Azure Stream Analytics úloh, které nejsou vložené do sítě, nespoléhejte na zdrojovou IP adresu připojení přicházejících ze stream Analytics žádným způsobem. Můžou se jednat o veřejné nebo privátní IP adresy v závislosti na operacích infrastruktury služeb, ke kterým dochází od času.
Nesprávně formátované vstupní události způsobují chyby při deserializaci
K problémům s deserializací dochází, když vstupní stream úlohy Stream Analytics obsahuje poškozené zprávy. Například chybějící kulatá nebo složená závorka v objektu JSON nebo nesprávný formát časového razítka v poli time může způsobit chybně formátovanou zprávu.
Když úloha Stream Analytics obdrží ze vstupu chybně formátovanou zprávu, zahodí ji a upozorní vás varováním. Na dlaždici Vstupy úlohy Stream Analytics se zobrazí symbol upozornění. Symbol upozornění existuje, pokud je úloha ve spuštěném stavu.
Povolte protokoly prostředků, abyste zobrazili podrobnosti o chybě a o zprávě (datové části), která způsobila chybu. K chybám deserializace může dojít z několika důvodů. Další informace o konkrétních chybách deserializace naleznete v tématu Chyby vstupních dat. Pokud protokoly prostředků nejsou povolené, na portálu Azure se zobrazí stručné oznámení.
Pokud je datová část zprávy větší než 32 kB nebo je v binárním formátu, spusťte CheckMalformedEvents.cs kód dostupný v úložišti ukázek GitHub. Tento kód načte offset identifikátoru oddílu a vypíše data uložená na tomto offsetu.
Mezi další běžné důvody chyb deserializace vstupu patří:
- Celočíselný sloupec, který má hodnotu větší než
9223372036854775807. - Řetězce místo pole objektů nebo objektů oddělených řádkem. Platný příklad:
[{'a':1}]. Neplatný příklad:"'a' :1". - Event Hubs zachytává objekt blob ve formátu Avro, který se používá jako vstup ve vaší úloze.
- Dva sloupce v jedné vstupní události, které se liší pouze v případě, například
column1aCOLUMN1.
Změny počtu oddílů centra událostí
Když se změní počet oddílů centra událostí, když je spuštěná úloha Stream Analytics, úloha selže s následující chybou:
Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException
Chcete-li tento problém vyřešit, zastavte a znovu spusťte úlohu Stream Analytics, aby mohla zjistit nový počet oddílů.
Úloha překračuje maximální počet příjemců služby Event Hubs.
Osvědčeným postupem při používání služby Event Hubs je použití více skupin příjemců pro škálovatelnost úloh. Počet čtenářů v úloze Stream Analytics pro určitý vstup ovlivňuje počet čtenářů v jedné skupině příjemců.
Přesný počet příjemců vychází z podrobností interní implementace logiky topologie horizontálního navýšení kapacity. Číslo není externě vystavené. Počet čtenářů se může změnit při spuštění úlohy nebo její aktualizaci.
Následující chybová zpráva se zobrazí, když počet příjemců překročí maximum. Zpráva obsahuje seznam existujících připojení ke službě Event Hubs ve skupině příjemců. Značka AzureStreamAnalytics označuje, že připojení pocházejí ze služby streamování 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
Když se během upgradu úlohy změní počet čtenářů, zapíšou se přechodná upozornění do protokolů auditu. Úlohy Stream Analytics se z těchto přechodných problémů automaticky obnoví.
Pokud chcete do instance služby Event Hubs přidat novou skupinu příjemců, postupujte takto:
Přihlaste se k portálu Azure.
Vyhledejte své centrum událostí.
Pod nadpisem Entity vyberte Event Hubs.
Vyberte centrum událostí podle názvu.
Na stránce Instance služby Event Hubs v části Entity vyberte Skupiny příjemců. Zobrazí se skupina příjemců s názvem $Default .
Pokud chcete přidat novou skupinu příjemců, vyberte + Skupina příjemců .
Když jste v úloze Stream Analytics vytvořili vstup, který bude odkazovat na centrum událostí, zadali jste tam skupinu příjemců. Služba Event Hubs používá $Default , pokud není zadána žádná skupina příjemců. Po vytvoření skupiny příjemců upravte vstup centra událostí v úloze Stream Analytics a zadejte název nové skupiny příjemců.
Počet čtenářů na oddíl překračuje limit služby Event Hubs
Pokud syntaxe dotazu pro streamování vícekrát odkazuje na stejný prostředek pro vstup služby Event Hubs, modul úlohy může pro daný dotaz použít více čtecích modulů v rámci stejné skupiny příjemců. Pokud existuje příliš mnoho odkazů na stejnou skupinu příjemců, může úloha překročit limit pěti a vyvolat chybu. Za těchto okolností můžete dále dělit pomocí více vstupů napříč několika skupinami příjemců.
Mezi scénáře, ve kterých počet čtenářů na oddíl překračuje limit pěti čtenářů ve službě Event Hubs, patří:
Více
SELECTpříkazů: Pokud použijete víceSELECTpříkazů, které odkazují na stejný vstup centra událostí, každýSELECTpříkaz způsobí vytvoření nového příjemce.UNION: Při použitíUNIONje možné mít více vstupů, které odkazují na stejné centrum událostí a skupinu příjemců.SELF JOIN: Při použitíSELF JOINoperace je možné několikrát odkazovat na stejné centrum událostí.
Následující osvědčené postupy vám můžou pomoct zmírnit scénáře, ve kterých počet čtenářů na oddíl překročí limit služby Event Hubs 5.
Rozdělení dotazu na několik kroků pomocí klauzule WITH
Klauzule WITH určuje dočasnou pojmenovanou sadu výsledků, na kterou FROM může odkazovat klauzule v dotazu. Klauzuli WITH definujete v rozsahu provádění jednoho SELECT příkazu.
Například místo tohoto dotazu:
SELECT foo
INTO output1
FROM inputEventHub
SELECT bar
INTO output2
FROM inputEventHub
…
Použijte tento dotaz:
WITH data AS (
SELECT * FROM inputEventHub
)
SELECT foo
INTO output1
FROM data
SELECT bar
INTO output2
FROM data
…
Ujistěte se, že vstupy jsou přiřazeny k různým skupinám uživatelů.
Pro dotazy, ve kterých jsou tři nebo více vstupů připojeny ke stejné skupině příjemců služby Event Hubs, vytvořte samostatné skupiny příjemců. Tato úloha vyžaduje vytvoření dalších vstupů Stream Analytics.
Vytvořte samostatné vstupy s různými skupinami konzumentů
Pro stejné centrum událostí můžete vytvořit samostatné vstupy s různými skupinami příjemců. V následujícím příkladu UNION dotazu , InputOne a InputTwo odkazují na stejný zdroj Event Hubs. Každý dotaz může mít samostatné vstupy s různými skupinami příjemců. Dotaz UNION je jen jeden příklad.
WITH
DataOne AS
(
SELECT * FROM InputOne
),
DataTwo AS
(
SELECT * FROM InputTwo
),
SELECT foo FROM DataOne
UNION
SELECT foo FROM DataTwo
Počet příjemců na oddíl překračuje limit služby IoT Hub
Úlohy Stream Analytics používají integrovaný koncový bod kompatibilní se službou Event Hubs v Azure IoT Hub pro připojení a čtení událostí z IoT Hub. Pokud počet čtenářů na oddíl překročí limity služby IoT Hub, můžete problém vyřešit pomocí řešení pro Event Hubs. Skupinu příjemců pro integrovaný koncový bod můžete vytvořit v relaci Koncový bod na portálu IoT Hub nebo prostřednictvím IoT Hub SDK.
Získání pomoci
Pokud potřebujete další pomoc, vyzkoušejte stránku Microsoft Q&A pro Azure Stream Analytics.
Další kroky
- Úvod do Azure Stream Analytics
- Analýza podvodných dat volání pomocí Stream Analytics a vizualizace výsledků na řídicím panelu Power BI
- Škálování úlohy Azure Stream Analytics za účelem zvýšení propustnosti
- Referenční informace k dotazovacímu jazyku Azure Stream Analytics
- rozhraní REST API služby Azure Stream Analytics Management