Řešení potíží se vstupními připojeními

Tento článek popisuje běžné problémy se vstupními připojeními Azure Stream Analytics, způsob jejich řešení a jejich opravu.

Mnoho kroků pro řešení potíží vyžaduje, abyste pro úlohu Stream Analytics zapnuli protokoly prostředků. Pokud nemáte zapnuté protokoly prostředků, přečtěte si téma Řešení potíží se službou Azure Stream Analytics pomocí protokolů prostředků.

Úloha nepřijímá vstupní události

  1. 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í ion.

  2. Prozkoumejte vstupní data:

    1. Pro každý vstup použijte tlačítko Ukázková data. Stáhněte si vstupní ukázková data.

    2. Prozkoumejte ukázková data, abyste porozuměli schématu a datovým typům.

    3. Zkontrolujte metriky služby Azure Event Hubs 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.

  3. 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í.

Důležité

U úloh Azure Stream Analytics, 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.

Chybné vstupní události způsobují chyby deserializace

K problémům s deserializací dochází, když vstupní stream úlohy Stream Analytics obsahuje poškozené zprávy. Například chybějící závorka nebo složená závorka v objektu JSON nebo nesprávný formát časového razítka v časovém poli může způsobit špatně formátovanou zprávu.

Když úloha Stream Analytics obdrží z vstupu špatnou zprávu, zahodí zprávu a upozorní vás na upozornění. 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.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Zapněte protokoly prostředků, abyste zobrazili podrobnosti o chybě a o zprávě (datové části), která chybu způsobila. 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 nejsou protokoly prostředků zapnuté, na webu Azure Portal se zobrazí stručné oznámení.

Screenshot that shows a warning notification about input details.

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 GitHubu. Tento kód přečte posun ID oddílu a vytiskne data umístěná v tomto posunu.

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 řádky. Platný příklad: *[{'a':1}]*. Neplatný příklad: *"'a' :1"*.
  • Použití objektu blob Event Hubs zachytává ve formátu Avro jako vstup ve vaší úloze.
  • Mít dva sloupce v jedné vstupní události, které se liší pouze v případě. Příklad: *column1* a *COLUMN1*.

Změny počtu oddílů

Počet oddílů center událostí je možné změnit. Pokud se změní počet oddílů centra událostí, musíte úlohu Stream Analytics zastavit a restartovat.

Při změně počtu oddílů centra událostí během běhu úlohy se zobrazí následující chyba: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

Ú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 při spuštění nebo upgradu úlohy změnit.

Následující chybová zpráva se zobrazí, když počet příjemců překročí maximum. Tato zpráva obsahuje seznam existujících připojení provedených 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_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1, 
AzureStreamAnalytics_c4b65e4a-f572-4cfc-b4e2-cf237f43c6f0_1.

Poznámka:

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:

  1. Přihlaste se k portálu Azure.

  2. Vyhledejte své centrum událostí.

  3. Pod nadpisem Entity vyberte Event Hubs.

  4. Vyberte centrum událostí podle názvu.

  5. Na stránce Instance služby Event Hubs v části Entity vyberte Skupiny příjemců. Zobrazí se skupina příjemců s názvem $Default .

  6. Vyberte + Skupina příjemců a přidejte novou skupinu příjemců.

    Screenshot that shows the button for adding a consumer group in Event Hubs.

  7. 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ů.

Čtenáři na oddíl překračují limit služby Event Hubs

Pokud syntaxe streamovaného dotazu odkazuje na stejný prostředek pro vstup centra událostí vícekrát, modul úloh může použít více čtenářů na dotaz ze 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 služby Event Hubs, patří:

  • Více SELECT příkazů: Pokud použijete více SELECT příkazů, které odkazují na stejný vstup centra událostí, každý SELECT pří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 JOIN operace 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 se vstupy sváže s různými skupinami příjemců.

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ření samostatných vstupů s různými skupinami příjemců

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

Čtenáři na oddíl překračují limit služby IoT Hub.

Úlohy Stream Analytics používají integrovaný koncový bod kompatibilní se službou Event Hubs ve službě Azure IoT Hub k připojení a čtení událostí ze služby IoT Hub. Pokud čtenáři na oddíl překročí limity služby IoT Hub, můžete ji vyřešit pomocí řešení pro službu Event Hubs . Skupinu příjemců pro integrovaný koncový bod můžete vytvořit prostřednictvím relace koncového bodu portálu IoT Hub nebo sady SDK služby IoT Hub.

Získání pomoci

Pokud potřebujete další pomoc, vyzkoušejte stránku Microsoft Q&A pro Azure Stream Analytics.

Další kroky