Azure Stream Analytics-kimenetek hibaelhárítása
Ez a cikk az Azure Stream Analytics kimeneti kapcsolataival kapcsolatos gyakori problémákat és a kimeneti problémák elhárításának módját ismerteti. Számos hibaelhárítási lépéshez engedélyezni kell az erőforrás- és egyéb diagnosztikai naplókat a Stream Analytics-feladathoz. Ha nincs engedélyezve az erőforrásnaplók használata, tekintse meg az Azure Stream Analytics hibaelhárítását erőforrásnaplók használatával.
A feladat nem hoz létre kimenetet
Ellenőrizze a kimenetekhez való kapcsolódást az egyes kimenetek Csatlakozás ion tesztelése gombjával.
Tekintse meg a Stream Analytics-feladat monitorozását az Azure Portallal a Monitor lapon. Mivel az értékek összesítve vannak, a metrikák néhány perccel késnek.
- Ha a Bemeneti események érték nagyobb, mint nulla, a feladat beolvassa a bemeneti adatokat. Ha a Bemeneti események érték nem nagyobb nullánál, probléma van a feladat bemenetével. További információt a bemeneti kapcsolatok hibaelhárítása című témakörben talál. Ha a feladat referenciaadat-bemenettel rendelkezik, alkalmazza a logikai név szerinti felosztást a bemeneti események metrikáinak megtekintésekor. Ha csak a referenciaadatokból nincsenek bemeneti események, az valószínűleg azt jelenti, hogy ez a bemeneti forrás nem lett megfelelően konfigurálva a megfelelő referenciaadatkészlet beolvasásához.
- Ha az adatkonvertálási hibák értéke nagyobb, mint nulla, és emelkedik, az adatkonvertálási hibákkal kapcsolatos részletes információkért tekintse meg az Azure Stream Analytics adathibáit .
- Ha a futtatókörnyezeti hibák értéke nullánál nagyobb, a feladat adatokat fogad, de hibákat generál a lekérdezés feldolgozása során. A hibák megkereséséhez nyissa meg az auditnaplókat, majd szűrjön a Sikertelen állapotra.
- Ha a bemeneti események értéke nullánál nagyobb, és a Kimeneti események értéke nulla, az alábbi utasítások egyike igaz:
- A lekérdezés feldolgozása nulla kimeneti eseményt eredményezett.
- Előfordulhat, hogy az események vagy mezők hibásan formázva lesznek, ami a lekérdezés feldolgozása után nulla kimenetet eredményez.
- A feladat kapcsolódási vagy hitelesítési okokból nem tudott adatokat leküldni a kimeneti fogadóba.
Az operatív naplóüzenetek további részleteket is megmagyaráznak, beleértve a történéseket is, kivéve azokat az eseteket, amikor a lekérdezési logika kiszűri az összes eseményt. Ha több esemény feldolgozása hibát okoz, a hibák 10 percenként összesítve lesznek.
Az első kimenet késik
Amikor elindul egy Stream Analytics-feladat, a bemeneti események beolvasva lesznek. Bizonyos körülmények között azonban előfordulhat, hogy a kimenet késik.
Az időbeli lekérdezéselemek nagy időértékei hozzájárulhatnak a kimenet késleltetéséhez. Ha a megfelelő kimenetet szeretné nagy időkeretek alatt előállítani, a streamelési feladat a lehető legfrissebb időpontból olvassa be az adatokat az időablak kitöltéséhez. Az adatok legfeljebb hét nappal korábbiak lehetnek. A kimenet nem keletkezik, amíg a ki nem írott bemeneti események be nem olvashatók. Ez a probléma akkor jelentkezhet, ha a rendszer frissíti a streamelési feladatokat. Amikor frissítés történik, a feladat újraindul. Az ilyen frissítések általában néhány havonta egyszer történnek.
A Stream Analytics-lekérdezés tervezésekor használjon belátást. Ha nagy időkeretet használ a feladat lekérdezési szintaxisának időbeli elemeihez, az az első kimenet késleltetéséhez vezethet, amikor a feladat elindul vagy újraindul. Több mint több órát, akár hét napot is nagy időkeretnek tekintünk.
Az ilyen típusú első kimeneti késleltetés egyik kockázatcsökkentése a lekérdezések párhuzamosítási technikáinak használata, például az adatok particionálása. Vagy hozzáadhat további streamelési egységeket az átviteli sebesség javításához, amíg a feladat el nem ér. További információ: Megfontolandó szempontok a Stream Analytics-feladatok létrehozásakor.
Ezek a tényezők befolyásolják az első kimenet idővonalát:
Ablakos aggregátumok használata, például a soromlás, a felhúzás és a tolóablakok GROUP BY záradéka:
- A le- vagy felugróablak-aggregátumok esetében az eredmények az ablak időkeretének végén jönnek létre.
- A tolóablakok esetében az eredmények akkor jönnek létre, amikor egy esemény belép vagy kilép a tolóablakból.
- Ha nagy méretű, például több mint egyórás ablakméretet szeretne használni, a legjobb, ha egy ugró- vagy tolóablakot választ. Ezek az ablaktípusok lehetővé teszik a kimenet gyakoribb megjelenítését.
Az időbeli illesztések, például a JOIN és a DATEDIFF használata:
- A találatok azonnal létrejönnek, amint a egyeztetett események mindkét oldala megérkezik.
- Az egyezést nem tartalmazó adatok (például a BAL OLDALI KÜLSŐ ILLESZTÉS) a DATEDIFF ablak végén jönnek létre a bal oldalon lévő összes eseményhez.
Az időbeli elemzési függvények, például az ISFIRST, a LAST és a LAG használata KORLÁT IDŐTARTAMmal:
- Elemzési függvények esetén a kimenet minden eseményhez létre lesz hozva. Nincs késés.
A kimenet elmarad
A feladatok normál működése során a kimenet hosszabb és hosszabb késési időszakokkal rendelkezhet. Ha a kimenet így elmarad, az alábbi tényezők vizsgálatával rögzítheti a kiváltó okokat:
- Szabályozva van-e az alsóbb rétegbeli fogadó
- A felsőbb rétegbeli forrás szabályozása
- Azt jelzi, hogy a lekérdezés feldolgozási logikája nagy számítási igényű-e
A kimeneti adatok megtekintéséhez válassza ki a streamelési feladatot az Azure Portalon, majd válassza a Feladat diagramot. Minden bemenethez partíciónként van egy hátralékesemény-metrika. Ha a metrika folyamatosan növekszik, az azt jelzi, hogy a rendszererőforrások korlátozottak. A növekedés valószínűleg a kimeneti fogadó szabályozásának vagy a magas processzorhasználatnak köszönhető. További információ: Adatvezérelt hibakeresés a feladatdiagram használatával.
Kulcssértési figyelmeztetés az Azure SQL Database kimenetével
Amikor egy Azure SQL-adatbázist kimenetként konfigurál egy Stream Analytics-feladathoz, az tömegesen beszúrja a rekordokat a céltáblába. Az Azure Stream Analytics általában legalább egyszer biztosítja a kimeneti fogadónak történő kézbesítést . Ha egy SQL-tábla egyedi korlátozást határoz meg, akkor is pontosan egyszeri kézbesítést érhet el egy SQL-kimenetre.
Amikor egyedi kulcskorlátozásokat állít be az SQL-táblán, az Azure Stream Analytics eltávolítja az ismétlődő rekordokat. Az adatokat kötegekre osztja, és rekurzív módon beszúrja a kötegeket, amíg egyetlen ismétlődő rekordot nem talál. A felosztási és beszúrási folyamat egyenként figyelmen kívül hagyja az ismétlődéseket. A sok ismétlődő sort tartalmazó streamelési feladatok esetében a folyamat nem hatékony és időigényes. Ha a tevékenységnaplóban több, az előző órára vonatkozó szabálysértési figyelmeztető üzenet jelenik meg, akkor valószínű, hogy az SQL-kimenet lelassítja a teljes feladatot.
A probléma megoldásához konfigurálja a kulcssértést okozó indexet a IGNORE_DUP_KEY beállítás engedélyezésével. Ezzel a beállítással az SQL figyelmen kívül hagyhatja az ismétlődő értékeket a tömeges beszúrások során. Az Azure SQL Database egyszerűen figyelmeztető üzenetet jelenít meg hiba helyett. Emiatt az Azure Stream Analytics már nem okoz elsődleges kulcssértési hibákat.
Figyelje meg a következő megfigyeléseket, amikor IGNORE_DUP_KEY konfigurál több indextípushoz:
- Nem állíthat be IGNORE_DUP_KEY elsődleges kulcsra vagy alter INDEXet használó egyedi kényszerre. El kell dobnia az indexet, és újra létre kell hoznia.
- Az IGNORE_DUP_KEY az ALTER INDEX használatával állíthatja be egy egyedi indexhez. Ez a példány eltér az ELSŐDLEGES KULCS/EGYEDI kényszertől, és a CREATE INDEX vagy INDEX definíció használatával jön létre.
- A IGNORE_DUP_KEY beállítás nem vonatkozik az oszloptár-indexekre, mert nem kényszerítheti rájuk az egyediséget.
SQL-kimeneti újrapróbálkozás logikája
Amikor egy SQL-kimenettel rendelkező Stream Analytics-feladat megkapja az események első kötegét, a következő lépések történnek:
- A feladat megpróbál csatlakozni az SQL-hez.
- A feladat lekéri a céltábla sémáját.
- A feladat ellenőrzi az oszlopneveket és -típusokat a céltábla sémája alapján.
- A feladat előkészít egy memóriabeli adattáblát a köteg kimeneti rekordjaiból.
- A feladat a BulkCopy API használatával írja az adattáblát az SQL-be.
A lépések során az SQL-kimenet a következő típusú hibákat tapasztalhatja:
Átmeneti hibák, amelyeket exponenciális backoff újrapróbálkozási stratégiával próbálnak újrapróbálkozásba. A minimális újrapróbálkozási időköz az egyes hibakódtól függ, de az időközök általában 60 másodpercnél rövidebbek. A felső korlát legfeljebb öt perc lehet.
A bejelentkezési hibák és a tűzfalproblémák az előző próbálkozás után legalább 5 perccel újrapróbálkoznak, és újrapróbálkoznak, amíg sikeresek nem lesznek.
Az adathibákat, például az öntési hibákat és a sémakényszer-szabálysértéseket kimeneti hibaszabályzat kezeli. Ezek a hibák a bináris felosztási kötegek újrapróbálásával kezelhetők, amíg a hibát okozó egyedi rekordot nem kezeli a rendszer kihagyással vagy újrapróbálkozással. Az elsődleges egyedi kulcskorlátozások megsértése mindig kezelhető.
Nem átmeneti hibák akkor fordulhatnak elő, ha SQL-szolgáltatásproblémák vagy belső kódhibák lépnek fel. Ha például az olyan hibák, mint a (Kód: 1132) Rugalmas készlet eléri a tárterületkorlátot, az újrapróbálkozások nem oldják meg a hibát. Ezekben a forgatókönyvekben a Stream Analytics-feladat romlást tapasztal.
BulkCopy
időtúllépések történhetnekBulkCopy
az 5. lépésben.BulkCopy
időnként tapasztalhatja a művelet időtúllépését. Az alapértelmezett minimálisan konfigurált időtúllépés öt perc, és egymást követő találatok esetén megduplázódik. Ha az időtúllépés meghaladja a 15 percet, a köteg maximális méretére vonatkozó tippBulkCopy
felére csökken, amíg kötegenként 100 esemény nem marad.
Az oszlopnevek kisbetűsek az Azure Stream Analyticsben (1.0)
Az eredeti kompatibilitási szint (1.0) használatakor az Azure Stream Analytics kisbetűsre módosítja az oszlopneveket. Ez a viselkedés a későbbi kompatibilitási szinteken lett javítva. Az eset megőrzéséhez lépjen az 1.1-es vagy újabb kompatibilitási szintre. További információ: Stream Analytics-feladatok kompatibilitási szintje.
Segítség kérése
További segítségért próbálja ki a Microsoft Q&A kérdésoldalát az Azure Stream Analyticshez.
Következő lépések
- Az Azure Stream Analytics bemutatása
- Get started using Azure Stream Analytics (Bevezetés az Azure Stream Analytics használatába)
- Scale Azure Stream Analytics jobs (Azure Stream Analytics-feladatok méretezése)
- Az Azure Stream Analytics lekérdezési nyelvének referenciája
- Azure Stream Analytics felügyeleti REST API-referencia