Megosztás a következőn keresztül:


Bemeneti kapcsolatok hibaelhárítása

Ez a cikk az Azure Stream Analytics bemeneti kapcsolataival kapcsolatos gyakori problémákat, a problémák elhárításának módját és azok kijavítási módját ismerteti.

Számos hibaelhárítási lépéshez be kell kapcsolnia az erőforrásnaplókat a Stream Analytics-feladathoz. Ha nincs bekapcsolva az erőforrásnapló, tekintse meg az Azure Stream Analytics hibaelhárítását erőforrásnaplók használatával.

A feladat nem fogad bemeneti eseményeket

  1. Ellenőrizze a bemenetekhez és kimenetekhez való kapcsolódást. Minden bemenethez és kimenethez használja a Tesztelés Csatlakozás ion gombot.

  2. A bemeneti adatok vizsgálata:

    1. Minden bemenethez használja a Mintaadatok gombot. Töltse le a bemeneti mintaadatokat.

    2. Vizsgálja meg a mintaadatokat a séma és az adattípusok megértéséhez.

    3. Ellenőrizze az Azure Event Hubs metrikáit , hogy az események küldése folyamatban van-e. Az üzenetmetrikáknak nullánál nagyobbnak kell lenniük, ha az Event Hubs üzeneteket fogad.

  3. Győződjön meg arról, hogy kiválasztott egy időtartományt a bemeneti előnézetben. Válassza az Időtartomány kiválasztása lehetőséget, majd adjon meg egy minta időtartamot a lekérdezés tesztelése előtt.

Fontos

A nem hálózati injektált Azure Stream Analytics-feladatok esetében semmilyen módon ne támaszkodjon a Stream Analyticsből érkező kapcsolatok forrás IP-címére. Ezek lehetnek nyilvános vagy privát IP-címek, az időről időre bekövetkező szolgáltatásinfrastruktúra-műveletektől függően.

A hibás bemeneti események deszerializálási hibákat okoznak

Deszerializálási problémák akkor fordulnak elő, ha a Stream Analytics-feladat bemeneti adatfolyama hibásan formázott üzeneteket tartalmaz. Például egy JSON-objektum hiányzó zárójele vagy zárójele, vagy az időmező helytelen időbélyeg-formátuma hibásan formázott üzenetet okozhat.

Amikor egy Stream Analytics-feladat helytelenül formázott üzenetet kap egy bemenettől, az eldobja az üzenetet, és figyelmeztetéssel értesíti Önt. A Stream Analytics-feladat Bemenetek csempéjén figyelmeztető szimbólum jelenik meg. A figyelmeztető szimbólum mindaddig létezik, amíg a feladat futó állapotban van.

Screenshot that shows the Inputs tile for Azure Stream Analytics.

Kapcsolja be az erőforrásnaplókat a hiba részleteinek és a hibát okozó üzenetnek (hasznos adatnak) a megtekintéséhez. A deszerializálási hibáknak több oka is lehet. Az egyes deszerializálási hibákról további információt a Bemeneti adatok hibái című témakörben talál. Ha az erőforrásnaplók nincsenek bekapcsolva, rövid értesítés jelenik meg az Azure Portalon.

Screenshot that shows a warning notification about input details.

Ha az üzenet hasznos adattartalma nagyobb, mint 32 KB, vagy bináris formátumban van, futtassa a GitHub-minták adattárában elérhető CheckMalformedEvents.cs kódot. Ez a kód beolvassa a partícióazonosító eltolását, és kinyomtatja az eltolásban található adatokat.

A bemeneti deszerializálási hibák egyéb gyakori okai a következők:

  • Egy egész szám oszlop, amelynek értéke nagyobb, mint 9223372036854775807.
  • Sztringek objektumtömb vagy vonallal elválasztott objektumok helyett. Érvényes példa: *[{'a':1}]*. Érvénytelen példa: *"'a' :1"*.
  • Az Event Hubs a feladat bemeneteként Avro formátumban rögzíti a blobot.
  • Egyetlen bemeneti esemény két oszlopa, amelyek csak abban az esetben különböznek. Példa: *column1* és *COLUMN1*.

Partíciószám változásai

Az eseményközpontok partíciószáma módosítható. Ha egy eseményközpont partíciószáma módosul, le kell állítania és újra kell indítania a Stream Analytics-feladatot.

A következő hiba akkor jelenik meg, ha egy eseményközpont partíciószáma módosul a feladat futtatása közben: Microsoft.Streaming.Diagnostics.Exceptions.InputPartitioningChangedException.

A feladat meghaladja a maximális Event Hubs-fogadókat

Az Event Hubs használatának ajánlott eljárása több fogyasztói csoport használata a feladatok méretezhetőségéhez. A Stream Analytics-feladat egy adott bemenethez tartozó olvasóinak száma befolyásolja az egyetlen fogyasztói csoport olvasóinak számát.

A fogadók pontos száma a vertikális felskálázási topológia logikájának belső implementálási részletein alapul. A szám külsőleg nem jelenik meg. A feladatok indításakor vagy frissítésekor az olvasók száma változhat.

A következő hibaüzenet akkor jelenik meg, ha a fogadók száma meghaladja a maximumot. Az üzenet tartalmazza az Event Hubshoz egy fogyasztói csoporthoz tartozó meglévő kapcsolatok listáját. A címke AzureStreamAnalytics azt jelzi, hogy a kapcsolatok egy Azure streaming szolgáltatásból származnak.

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.

Feljegyzés

Amikor egy feladatfrissítés során az olvasók száma megváltozik, a rendszer átmeneti figyelmeztetéseket ír az auditnaplókba. A Stream Analytics-feladatok automatikusan helyreállnak ezekből az átmeneti problémákból.

Ha új fogyasztói csoportot szeretne hozzáadni az Event Hubs-példányhoz, kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalra.

  2. Keresse meg az eseményközpontot.

  3. Az Entitások fejléc alatt válassza az Event Hubs lehetőséget.

  4. Válassza ki az eseményközpontot név szerint.

  5. Az Event Hubs-példány lap Entitások fejléce alatt válassza a Fogyasztói csoportok lehetőséget. Megjelenik egy $Default nevű fogyasztói csoport.

  6. Új fogyasztói csoport hozzáadásához válassza a +Fogyasztói csoport lehetőséget.

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

  7. Amikor létrehozta a Stream Analytics-feladatban az eseményközpontra mutató bemenetet, ott adta meg a fogyasztói csoportot. Az Event Hubs $Default használ, ha nincs megadva fogyasztói csoport. Miután létrehozott egy fogyasztói csoportot, szerkessze az eseményközpont bemenetét a Stream Analytics-feladatban, és adja meg az új fogyasztói csoport nevét.

Az olvasók partíciónként túllépik az Event Hubs korlátját

Ha a streamelési lekérdezés szintaxisa többször hivatkozik ugyanarra az erőforrásra az eseményközpont bemenetéhez, a feladatmotor lekérdezésenként több olvasót is használhat ugyanabból a fogyasztói csoportból. Ha túl sok hivatkozás van ugyanarra a fogyasztói csoportra, a feladat túllépheti az öt fős korlátot, és hibát jelezhet. Ilyen körülmények között tovább oszthatja a több bemenetet több fogyasztói csoport között.

Olyan forgatókönyvek, amelyekben a partíciónkénti olvasók száma meghaladja az Event Hubs öt fős korlátját, a következők:

  • Több SELECT utasítás: Ha több SELECT olyan utasítást használ, amely ugyanarra az eseményközpont bemenetére hivatkozik, minden SELECT utasítás új fogadót hoz létre.

  • UNION: Ha használjaUNION, több bemenet is lehet, amelyek ugyanarra az eseményközpontra és fogyasztói csoportra hivatkoznak.

  • SELF JOIN: Ha egy SELF JOIN műveletet használ, többször is hivatkozhat ugyanarra az eseményközpontra.

Az alábbi ajánlott eljárások segíthetnek enyhíteni azokat a forgatókönyveket, amelyekben a partíciónkénti olvasók száma meghaladja az Event Hubs öt fős korlátját.

A lekérdezés felosztása több lépésre egy WITH záradék használatával

A WITH záradék egy ideiglenes elnevezett eredménykészletet határoz meg, amelyre a lekérdezés egyik FROM záradéka hivatkozhat. A záradékot WITH egyetlen SELECT utasítás végrehajtási hatókörében definiálhatja.

Például a lekérdezés helyett:

SELECT foo 
INTO output1
FROM inputEventHub

SELECT bar
INTO output2
FROM inputEventHub 
…

Használja a következőt:

WITH data AS (
   SELECT * FROM inputEventHub
)

SELECT foo
INTO output1
FROM data

SELECT bar
INTO output2
FROM data
…

Győződjön meg arról, hogy a bemenetek különböző fogyasztói csoportokhoz kötődnek

Az olyan lekérdezések esetében, amelyekben három vagy több bemenet csatlakozik ugyanahhoz az Event Hubs-fogyasztói csoporthoz, hozzon létre külön fogyasztói csoportokat. Ehhez a feladathoz további Stream Analytics-bemenetek létrehozása szükséges.

Külön bemenetek létrehozása különböző fogyasztói csoportokkal

Külön bemeneteket hozhat létre különböző fogyasztói csoportokkal ugyanahhoz az eseményközponthoz. A lekérdezés alábbi példájában UNION az InputOne és az InputTwo ugyanarra az Event Hubs-forrásra hivatkozik. Bármely lekérdezésnek külön bemenete lehet különböző fogyasztói csoportokkal. A UNION lekérdezés csak egy példa.

WITH 
DataOne AS 
(
SELECT * FROM InputOne 
),

DataTwo AS 
(
SELECT * FROM InputTwo 
),

SELECT foo FROM DataOne
UNION 
SELECT foo FROM DataTwo

Az olvasók partíciónként túllépik az IoT Hub korlátját

A Stream Analytics-feladatok az Azure IoT Hub beépített Event Hubs-kompatibilis végpontját használják az események IoT Hubról való csatlakoztatásához és olvasásához. Ha az olvasók partíciónként túllépik az IoT Hub korlátait, az Event Hubs megoldásait használhatja a megoldásukhoz. Létrehozhat egy fogyasztói csoportot a beépített végponthoz az IoT Hub portál végponti munkamenetén vagy az IoT Hub SDK-on keresztül.

Segítség kérése

További segítségért próbálja ki a Microsoft Q&A oldalát az Azure Stream Analyticshez.

Következő lépések