A Blob Storage és az Azure Data Lake Gen2 kimenete az Azure Stream Analyticsből
A Data Lake Storage Gen2 teszi az Azure Storage-t az Azure-beli nagyvállalati adattavak készítésének alapjaként. A Data Lake Storage Gen2 a kezdetektől több petabájtnyi információ kiszolgálása és több száz gigabájtos átviteli sebesség fenntartása mellett lehetővé teszi a nagy mennyiségű adat egyszerű kezelését. A Data Lake Storage Gen2 alapvető része egy hierarchikus névtér hozzáadása a Blob Storage-hoz.
Az Azure Blob Storage költséghatékony és méretezhető megoldást kínál nagy mennyiségű strukturálatlan adat felhőben való tárolására. A Blob Storage és használatának bemutatása: Blobok feltöltése, letöltése és listázása az Azure Portalon.
Feljegyzés
Az AVRO- és Parquet-formátumokra jellemző viselkedésekről az áttekintés kapcsolódó szakaszaiban olvashat.
Kimeneti konfiguráció
Az alábbi táblázat felsorolja a blob- vagy Azure Data Lake Storage Gen2-kimenet létrehozásához használt tulajdonságneveket és azok leírását.
Tulajdonság neve | Leírás |
---|---|
Kimeneti alias | A lekérdezésekben használt rövid név, amellyel a lekérdezés kimenete ebbe a blobtárolóba irányítható. |
Tárfiók | Annak a tárfióknak a neve, ahová a kimenetet küldi. |
Tárfiók kulcsa | A tárfiókhoz társított titkos kulcs. |
Tároló | Logikai csoportosítás az Azure Blob szolgáltatásban tárolt blobokhoz. Amikor feltölt egy blobot a Blob szolgáltatásba, meg kell adnia egy tárolót a blobhoz. A dinamikus tároló neve nem kötelező. Egy és csak egy dinamikus tárolót {field} támogat a tároló nevében. A mezőnek léteznie kell a kimeneti adatokban, és követnie kell a tárolónévházirendet.A mező adattípusának a következőnek kell lennie string : . Ha több dinamikus mezőt szeretne használni, vagy statikus szöveget szeretne kombinálni a dinamikus mezővel, azt a lekérdezésben definiálhatja beépített sztringfüggvényekkel, például CONCAT, LTRIM stb. |
Eseményszerializációs formátum | A kimeneti adatok szerializálási formátuma. A JSON, a CSV, az Avro és a Parquet támogatott. A Delta Lake itt szerepel lehetőségként. Ha a Delta Lake van kiválasztva, az adatok Parquet formátumúak. További információ a Delta Lake-ről |
Delta elérési út neve | Akkor szükséges, ha az esemény szerializálási formátuma Delta Lake. A delta lake tábla megadott tárolón belüli írásához használt elérési út. Tartalmazza a tábla nevét. További részletek és példák. |
Írási mód | Az írási mód szabályozza, hogy az Azure Stream Analytics hogyan ír a kimeneti fájlba. Pontosan egyszer csak akkor történik kézbesítés, ha az írási mód Egyszer. További információ a következő szakaszban. |
Partícióoszlop | Opcionális. A (z) {field} név a kimeneti adatoktól a partícióig. Csak egy partícióoszlop támogatott. |
Elérésiút-minta | Akkor szükséges, ha az esemény szerializálási formátuma Delta lake. A blobok megadott tárolón belüli írásához használt fájlútvonal-minta. Az elérésiút-mintában a dátum- és időváltozók egy vagy több példányát használhatja a blobok írási gyakoriságának megadásához: {date}, {time}. Ha az írási mód egyszeri, akkor {date} és {time} módban is használnia kell. Egyéni blobparticionálással egyetlen egyéni {field} nevet adhat meg az eseményadatokból a blobok particionálásához. A mezőnév alfanumerikus, és szóközöket, kötőjeleket és aláhúzásjeleket tartalmazhat. Az egyéni mezőkre vonatkozó korlátozások a következők:
Ez a funkció lehetővé teszi egyéni dátum-/időformátum-meghatározó konfigurációk használatát az elérési úton. Az egyéni dátum- és időformátumokat egyenként kell megadni a {datetime:<specifier>} kulcsszóval együtt. A meghatározó <> számára engedélyezett bemenetek: éééé, MM, M, dd, d, HH, H, mm, m, ss vagy s. A (z) {datetime:<specifier>} kulcsszó többször is használható az egyéni dátum-/időkonfigurációk létrehozásához. Példák:
A létrehozott mappastruktúra időbélyege az UTC-t és nem a helyi időpontot követi. A System.Timestamp az időalapú particionáláshoz használt idő. A fájlelnevezés a következő konvenciót használja: {Path Prefix Pattern}/schemaHashcode_Guid_Number.extension Itt a Guid a blobfájlba íráshoz létrehozott belső íróhoz rendelt egyedi azonosítót jelöli. A szám a blobblokk indexét jelöli. Példa kimeneti fájlokra:
A funkcióval kapcsolatos további információkért tekintse meg az Azure Stream Analytics egyéni blobkimenet particionálását. |
Dátumformátum | Akkor szükséges, ha az esemény szerializálási formátuma Delta lake. Ha a dátum jogkivonata szerepel az előtag elérési útján, kiválaszthatja a fájlok rendszerezésének dátumformátumát. Példa: YYYY/MM/DD |
Időformátum | Akkor szükséges, ha az esemény szerializálási formátuma Delta lake. Ha az időjogkivonatot az előtag elérési útján használja, adja meg a fájlok rendszerezésének időformátumát. |
Minimális sorok | A kötegenkénti minimális sorok száma. A Parquet esetében minden köteg létrehoz egy új fájlt. Az aktuális alapértelmezett érték 2000 sor, az engedélyezett maximális érték pedig 10 000 sor. |
Maximális idő | A kötegenkénti maximális várakozási idő. Ezután a köteg akkor is a kimenetbe lesz beírva, ha a minimális sorkövetelmények nem teljesülnek. Az aktuális alapértelmezett érték 1 perc, az engedélyezett maximális érték pedig 2 óra. Ha a blobkimenet útvonalminta-gyakorisággal rendelkezik, a várakozási idő nem lehet magasabb a partíció időtartományánál. |
Kódolás | HA CSV- vagy JSON-formátumot használ, kódolást kell megadni. Jelenleg az UTF-8 az egyetlen támogatott kódolási formátum. |
Elválasztókarakter | Csak CSV-szerializálásra alkalmazható. A Stream Analytics számos gyakori elválasztó karaktert támogat a CSV-adatok szerializálásához. A támogatott értékek a következők: vessző, pontosvessző, szóköz, lap és függőleges sáv. |
Formátum | Csak JSON-szerializálásra alkalmazható. A sor elválasztva azt adja meg, hogy a kimenet úgy van formázva, hogy minden JSON-objektumot egy új sor választ el egymástól. Ha a Sor elválasztva lehetőséget választja, a JSON egyszerre egy objektumot olvas be. A teljes tartalom önmagában nem lenne érvényes JSON. A tömb azt adja meg, hogy a kimenet JSON-objektumok tömbjeként legyen formázva. Ez a tömb csak akkor lesz bezárva, ha a feladat leáll, vagy a Stream Analytics továbblép a következő időpontra. Általában célszerű sorhatárolt JSON-t használni, mert nincs szükség speciális kezelésre, amíg a kimeneti fájl írása folyamatban van. |
Pontos egyszeri kézbesítés (nyilvános előzetes verzió)
A streamelési bemenetek olvasása esetén a végpontok közötti továbbítás pontosan azt jelenti, hogy a feldolgozott adatok egyszer duplikációk nélkül lesznek megírva az Azure Data Lake Storage Gen2 kimenetére. Ha a funkció engedélyezve van, a Stream Analytics-feladat nem garantálja az adatvesztést, és nem keletkeznek duplikációk kimenetként, a felhasználó által kezdeményezett újraindítás során az utolsó kimeneti időponttól kezdve. Ez jelentősen leegyszerűsíti a streamelési folyamatot azáltal, hogy nem kell implementálnia és elhárítania a deduplikációs logikát.
Írási mód
A Stream Analytics kétféleképpen ír a Blob Storage-ba vagy az ADLS Gen2-fiókba. Az egyik az, hogy az eredményeket ugyanahhoz a fájlhoz vagy egy fájlsorozathoz kell hozzáfűzni, ahogy az eredmények érkeznek. A másik az időpartíció összes eredménye után írni, ha az időpartíció összes adata elérhető. Ha az írási mód egyszer van engedélyezve, a pontos egyszeri kézbesítés engedélyezve van.
A Delta Lake-hez nincs írási mód. A Delta Lake-kimenet azonban pontosan egyszer garantálja a deltanapló használatát. Nem igényel időpartíciót, és a felhasználó által megadott kötegelési paraméterek alapján folyamatosan írná az eredményeket.
Feljegyzés
Ha nem szeretné pontosan egyszer használni az előzetes verziójú funkciót, válassza a Hozzáfűzés lehetőséget az eredmények érkezésekor.
Konfiguráció
Ha a Blob Storage- vagy ADLS Gen2-fiókhoz pontosan egyszer szeretne kézbesítést kapni, a következő beállításokat kell konfigurálnia:
- Válassza az Egyszer lehetőséget , miután az időpartíció minden eredménye elérhető az írási módhoz.
- Adja meg a(z) {date} és {time} útvonalmintát is.
- Adja meg a dátumformátumot és az időformátumot.
Korlátozások
- Az alstream nem támogatott.
- Az elérésiút-minta kötelező tulajdonsággá válik, és {date} és {time} tulajdonságot is tartalmaznia kell. Nem engedélyezett dinamikus egyéni {field} név. További információ az egyéni útvonalmintáról.
- Ha a feladat az utolsó kimeneti időpont előtt vagy után egyéni időpontban indul el, fennáll a fájl felülírásának kockázata. Ha például az időformátum HH, a fájl óránként jön létre. Ha 8:15-kor állítja le a feladatot, és 8:30-kor újraindítja a feladatot, a 8:30 és 9 óra között létrehozott fájl csak 8:30 és 9 óra közötti adatokat fed le. Az adatok 8:00 és 08:15 között elvesznek, mivel felülírják.
Blob kimeneti fájljai
Ha Blob Storage-t használ kimenetként, a blobban a következő esetekben jön létre új fájl:
- A fájl meghaladja az engedélyezett blokkok maximális számát (jelenleg 50 000). A blokkok maximális száma a blobok maximális méretének elérése nélkül is elérheti. Ha például a kimeneti sebesség magas, blokkonként több bájt jelenik meg, a fájlméret pedig nagyobb. Ha a kimeneti sebesség alacsony, minden blokk kevesebb adatot, a fájlméret pedig kisebb.
- Sémamódosítás történt a kimenetben, és a kimeneti formátumhoz rögzített séma szükséges (CSV, Avro, Parquet).
- A feladatokat külsőleg, a felhasználó leállítja és elindítja, vagy belsőleg, rendszerkarbantartás vagy hibahelyreállítás céljából.
- A lekérdezés teljes mértékben particionált, és minden kimeneti partícióhoz létrejön egy új fájl. A PARTÍCIÓ BY vagy az 1.2 kompatibilitási szinten bevezetett natív párhuzamosításból származik
- A felhasználó törli a tárfiók egy fájlját vagy tárolóját.
- A kimenet az elérési út előtagmintájának használatával particionált idő, és egy új blobot használ, amikor a lekérdezés a következő órára ugrik.
- A kimenetet egy egyéni mező particionálta, és egy új blob jön létre partíciókulcsonként, ha nem létezik.
- A kimenetet egy egyéni mező particionálta, ahol a partíciókulcs számossága meghaladja a 8000-et, és partíciókulcsonként új blob jön létre.
Particionálás
Partíciókulcs esetén használja a(z) {date} és {time} jogkivonatokat az útvonalminta eseménymezőiből. Válassza ki a dátumformátumot, például YYYY/MM/DD, DD/MM/YYYY vagy MM-DD-YYYY. A HH az időformátumhoz használatos. A blobkimenetet egyetlen egyéni eseményattribútum ({fieldname} vagy {datetime:<specifier>}) particionálhatja. A kimeneti írók száma a teljes mértékben párhuzamos lekérdezések bemeneti particionálását követi.
Kimeneti köteg mérete
A maximális üzenetméretért tekintse meg az Azure Storage korlátait. A blobblokkok maximális mérete 4 MB, a blobblokkok maximális száma pedig 50 000.
Korlátozások
- Ha az elérési út mintájában perjel szimbólumot
/
használ (például /folder2/folder3), akkor üres mappák jönnek létre, és nem láthatók a Storage Explorerben - Az Azure Stream Analytics ugyanahhoz a fájlhoz fűzi azokat az eseteket, amikor nincs szükség új blobfájlra. Ez további eseményindítók létrehozását okozhatja, ha az Azure-szolgáltatások, például az Event Grid úgy vannak konfigurálva, hogy aktiválódjanak a blobfájl frissítésekor.
- Az Azure Stream Analytics alapértelmezés szerint hozzáfűzi a blobot. Ha a kimeneti formátum egy Json-tömb, akkor leállításkor vagy amikor a kimenet az időparticionált kimenetek következő partíciójára kerül. Bizonyos esetekben, például a tisztátalan újraindításkor előfordulhat, hogy hiányzik a JSON-tömb záró "]" eleme.