Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan állíthatja be és használhatja a késői érkezési és a rendelésen kívüli eseményszabályzatokat az Azure Stream Analyticsben. Ezek a szabályzatok csak akkor lesznek alkalmazva, ha a lekérdezésben a TIMESTAMP BY záradékot használja, és csak a felhőbeli bemeneti forrásokra lesznek alkalmazva.
Esemény időpontja és érkezési idő
A Stream Analytics-feladat eseményidő vagy érkezési idő alapján is feldolgozhatja az eseményeket. Az esemény/alkalmazás ideje az esemény hasznos adataiban (az esemény létrehozásakor) jelen lévő időbélyeg. Az érkezési idő az az időbélyeg, amikor az esemény a bemeneti forrásnál (Event Hubs/IoT Hub/Blob Storage) érkezett.
A Stream Analytics alapértelmezés szerint az érkezési idő szerint dolgozza fel az eseményeket, de a lekérdezés TIMESTAMP BY záradékával beállíthatja, hogy eseményidő szerint dolgozza fel az eseményeket. Késői érkezési és rendelésen kívüli szabályzatok csak akkor alkalmazhatók, ha eseményeket dolgoz fel eseményidő szerint. Mindig vegye figyelembe a forgatókönyv késésre és helyes sorrendre vonatkozó követelményeit ezen beállítások konfigurálásakor.
Mi a kései érkezésre vonatkozó szabályzat?
Néha az események különböző okok miatt késve érkeznek. Például egy 40 másodperccel később érkező esemény eseményideje = 00:10:00 és érkezési idő = 00:10:40 lesz. Ha a késői érkezési szabályzatot 15 másodpercre állítja be, a 15 másodpercnél később érkező eseményeket a rendszer elveti (a Stream Analytics nem dolgozza fel), vagy módosítja az esemény időpontját. A fenti példában, mivel az esemény 40 másodperc késésben érkezett (a szabályzatkészletnél több), az eseményideje a késői érkezési szabályzat 00:10:25-ös maximális értékéhez lesz igazítva (érkezési idő – késői érkezési szabályzat értéke). Az alapértelmezett késői érkezési szabályzat 5 másodperc.
Mi az a rendelésen kívüli szabályzat?
Előfordulhat, hogy az esemény a rendelésen kívülre is érkezik. Az eseményidő késői érkezési szabályzat alapján történő módosítása után dönthet úgy is, hogy automatikusan elveti vagy módosítja a rendelésen kívüli eseményeket. Ha ezt a szabályzatot 8 másodpercre állítja be, a sorrendből, de a 8 másodperces ablakban érkező eseményeket eseményidő szerint rendezi újra a rendszer. A később érkező eseményeket a rendszer elveti vagy a rendelésen kívüli szabályzat maximális értékére módosítja. Az alapértelmezett rendelésen kívüli szabályzat 0 másodperc.
Események módosítása vagy elvetése
Ha az események a konfigurált szabályzatok alapján későn vagy sorrenden kívül érkeznek, elvetheti az ilyen eseményeket (amelyeket a Stream Analytics nem dolgoz fel), vagy módosíthatja az események időpontját.
Lássunk egy példát ezekre a szabályzatokra működés közben.
Késői érkezési szabályzat: 15 másodperc
Rendelésen kívüli szabályzat: 5 másodperc
| Eseményszám | Esemény időpontja | Érkezési idő | System.Timestamp | Magyarázat |
|---|---|---|---|---|
| 1 | 00:10:00 | 00:10:40 | 00:10:25 | Az esemény késői és külső tűrésszinten érkezett. Az eseményidő így a maximális késői érkezési tűréshatárhoz lesz igazítva. |
| 2 | 00:10:30 | 00:10:41 | 00:10:30 | Az esemény késve érkezett, de a tolerancia szintjén belül. Az eseményidő tehát nem módosul. |
| 3 | 00:10:42 | 00:10:42 | 00:10:42 | Az esemény időben érkezett. Nincs szükség módosításra. |
| 4 | 00:10:38 | 00:10:43 | 00:10:38 | Az esemény rendelésen kívülre érkezett, de 5 másodperces tűréshatáron belül. Az eseményidő tehát nem módosul. Elemzési célokból ezt az eseményt a 3. számú előző eseménynek tekintjük (az összesen 5 esemény figyelembe vételével). A tényleges sorrend: 1, 2, 5, 4, 3). |
| 5 | 00:10:35 | 00:10:45 | 00:10:37 | Az esemény sorrenden kívül és 5 másodperces külső tűréshatáron kívül érkezett. Az eseményidő tehát a rendelésen kívüli tolerancia maximális értékére van beállítva. |
Ezek a beállítások késleltethetik a feladat kimenetét?
Igen. Alapértelmezés szerint a rendelésen kívüli szabályzat értéke nulla (00 perc és 00 másodperc). Ha módosítja az alapértelmezett értéket, a feladat első kimenetét ez az érték késlelteti (vagy nagyobb).
Ha a bemenetek egyik partíciója nem fogad eseményeket, a kimenetet a késői érkezési szabályzat értéke késlelteti. A hiba okának megismeréséhez olvassa el az alábbi InputPartition hibaszakaszt.
LateInputEvents üzenetek jelennek meg a tevékenységnaplóban
Ezek az üzenetek arról tájékoztatják, hogy az események késve érkeztek, és a konfigurációnak megfelelően elvetik vagy módosítják őket. Ezeket az üzeneteket figyelmen kívül hagyhatja, ha megfelelően konfigurálta a késői érkezési szabályzatot.
Példa erre az üzenetre:
{"message Time":"2019-02-04 17:11:52Z","error":null,
"message":"First Occurred: 02/04/2019 17:11:48 | Resource Name: ASAjob | Message: Source 'ASAjob' had 24 data errors of kind 'LateInputEvent' between processing times '2019-02-04T17:10:49.7250696Z' and '2019-02-04T17:11:48.7563961Z'. Input event with application timestamp '2019-02-04T17:05:51.6050000' and arrival time '2019-02-04T17:10:44.3090000' was sent later than configured tolerance.","type":"DiagnosticMessage","correlation ID":"aaaa0000-bb11-2222-33cc-444444dddddd"}
Az InputPartitionNotProgressing a tevékenységnaplóban jelenik meg
A bemeneti forrás (Event Hub/IoT Hub) valószínűleg több partícióval rendelkezik. Az Azure Stream Analytics csak akkor állítja elő a t1 időbélyeg kimenetét, ha az összes egyesített partíció legalább t1 időpontban van. Tegyük fel például, hogy a lekérdezés egy olyan eseményközpont-partícióról olvas be, amely két partícióval rendelkezik. Az egyik partíció, a P1 t1 időpontig eseményekkel rendelkezik. A másik partíció, a P2 t1 + x időpontig rendelkezik eseményekkel. A kimenet ezután a t1 időpontig lesz létrehozva. Ha azonban explicit partition by PartitionId záradék van, mindkét partíció egymástól függetlenül halad.
Ha ugyanabból a bemeneti adatfolyamból több partíciót kombinál, a késői érkezési tűrés az az idő, amelyet minden partíció az új adatokra vár. Ha egy partíció található az eseményközpontban, vagy ha az IoT Hub nem fogad bemeneteket, a partíció idővonala nem halad előre, amíg el nem éri a késői érkezési tűréshatárt. Ez késlelteti a kimenetet a késői érkezési tolerancia küszöbértékével. Ilyen esetekben a következő üzenet jelenhet meg:
{"message Time":"2/3/2019 8:54:16 PM UTC","message":"Input Partition [2] does not have additional data for more than [5] minute(s). Partition will not progress until either events arrive or late arrival threshold is met.","type":"InputPartitionNotProgressing","correlation ID":"0000000000-0000-0000-0000-00000000000000"}
Ez az üzenet arról tájékoztatja, hogy a bemenet legalább egy partíciója üres, és késlelteti a kimenetet a késői érkezési küszöbérték szerint. Ennek leküzdése érdekében a következőket javasoljuk:
- Győződjön meg arról, hogy az Event Hub/IoT Hub összes partíciója fogad bemenetet.
- Használja a Partition by PartitionID záradékot a lekérdezésben.
Miért látok 5 másodperces késést akkor is, ha a késői érkezési szabályzatom 0-ra van állítva?
Ez akkor fordul elő, ha egy bemeneti partíció soha nem kapott bemenetet. A viselkedés ellenőrzéséhez partíciónként ellenőrizheti a bemeneti metrikákat.
Ha egy partíció nem rendelkezik a konfigurált késői érkezési küszöbértéknél nagyobb adatokkal, a Stream Analytics előrelépteti az alkalmazás időbélyegét az eseményrendezési szempontok szakaszában leírtak szerint. Ehhez becsült érkezési idő szükséges. Ha a partíció soha nem rendelkezett adatokkal, a Stream Analytics a helyi idő – 5 másodperc – érkezési időt becsüli meg. Emiatt az adatokkal nem rendelkező partíciók 5 másodperces vízjel-késleltetést mutathatnak.