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


Azure Blob Storage és Data Lake Storage Gen2 kimenet a Stream Analyticsből

Az Azure 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 úgy lett kialakítva, hogy több petabájtnyi információt kiszolgáljon, miközben több száz gigabites átviteli sebességet tart fenn. Segítségével könnyen kezelheti a nagy mennyiségű adatot. A Data Lake Storage Gen2 alapvető része egy hierarchikus névtér hozzáadása az Azure Blob Storage-hoz.

A 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-ról és annak használatáról az Azure Portallal való blobok feltöltése, letöltése és listázása című témakörben olvashat.

Feljegyzés

Az Avro- és Parquet-formátumokra vonatkozó viselkedésekkel kapcsolatos információkért tekintse meg az áttekintés kapcsolódó szakaszait.

Kimeneti konfiguráció

Az alábbi táblázat felsorolja a blob- vagy 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 felhasználóbarát név, amellyel a lekérdezés kimenetét erre a blobra irányíthatja.
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 a Blob Storage-ban tárolt blobokhoz. Amikor feltölt egy blobot a Blob Storage-ba, 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 egy dinamikus mezővel, definiálhatja azt a lekérdezésben beépített sztringfüggvényekkel, például CONCAT és LTRIM.
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 információkért és példákért lásd : Írás Delta Lake-táblába.
Írási mód Az írási mód szabályozza, hogy az Azure Stream Analytics hogyan ír egy kimeneti fájlba. Pontosan egyszeri kézbesítés csak akkor történik, ha az írási mód egyszeri. További információért tekintse át a következő szakaszt.
Partícióoszlop Opcionális. A {field} 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ás mód egyszer van, akkor mindkettőt {date} és {time}.

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:
  • Nem engedélyezett dinamikus egyéni {field} név, ha az írási mód egyszer van megadva.
  • A mezőnevek nem megkülönböztetik a kis- és nagybetűket. A szolgáltatás például nem tud különbséget tenni az oszlop ID és az oszlop idközött.
  • A beágyazott mezők nem engedélyezettek. Ehelyett használjon aliast a feladat lekérdezésében a mező "elsimításához".
  • A kifejezések nem használhatók mezőnévként.

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-/időformátumokat egyenként kell megadni, és a {datetime:\<specifier>} kulcsszónak tartalmaznia kell. Az engedélyezett bemenetek a következőkyyyy: \<specifier> , MM, M, dd, d, HHH, mm, m, , ssvagy s. A {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:
  • 1. példa: cluster1/logs/{date}/{time}
  • 2. példa: cluster1/logs/{date}
  • 3. példa: cluster1/{client_id}/{date}/{time}
  • 4. példa: cluster1/{datetime:ss}/{myField} ahol a lekérdezés SELECT data.myField AS myField FROM Input;
  • 5. példa: cluster1/year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

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

Guid Itt egy blobfájlba való í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:
  • Myoutput/20170901/00/45434_gguid_1.csv
  • Myoutput/20170901/01/45434_gguid_1.csv

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éldául: 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 í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, a kódolást meg kell adni. 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 még mindig be van írva.

Pontosan egyszeri kézbesítés (nyilvános előzetes verzió)

A streambemenetek beolvasása esetén a végpontok közötti pontos kézbesítés azt jelenti, hogy a feldolgozott adatok egyszer, duplikációk nélkül kerülnek a 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. 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 a Data Lake Storage Gen2-fiókba. Ennek egyik módja, hogy az eredményeket ugyanahhoz a fájlhoz vagy egy fájlsorozathoz fűzi, amikor az eredmények érkeznek. A másik módszer az időpartíció összes eredményének írása, amikor az időpartíció összes adata elérhető. A pontosan egyszeri kézbesítés engedélyezve van, ha az írási mód egyszer van.

A Delta Lake-hez nincs írási mód. A Delta Lake-kimenet azonban pontosan egyszeri garanciát is biztosít a Delta-napló használatával. Nem igényel időpartíciót, és folyamatosan írja az eredményeket a felhasználó által megadott kötegelési paraméterek alapján.

Feljegyzés

Ha nem szeretné használni az előzetes verziójú funkciót a pontos egyszeri kézbesítéshez, válassza a Hozzáfűzés lehetőséget az eredmények érkezésekor.

Konfiguráció

A Blob Storage- vagy Data Lake Storage Gen2-fiók pontos egyszeri kézbesítéséhez konfigurálnia kell a következő beállításokat:

  • 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 az elérési útmintát mindkettővel {date} és {time} megadva.
  • 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 tartalmaznia kell mind {date} a {time}. 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ő 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 értékre van állítva, 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 a 8:30 és 9:30 közötti adatokat fedi le. Az adatok 8 és 8:15 között elvesznek, mivel felülírják azokat.

Blob kimeneti fájljai

Ha a Blob Storage-t használja 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ámát a maximálisan megengedett blobméret 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 vagy Parquet).
  • A rendszer újraindít egy feladatot külsőleg, vagy egy felhasználó leállítja és elindítja, vagy belsőleg a rendszerkarbantartáshoz vagy a hiba helyreállításához.
  • A lekérdezés teljes mértékben particionált, és minden kimeneti partícióhoz létrejön egy új fájl. Ez az 1.2 kompatibilitási szinten bevezetett natív párhuzamosításból PARTITION BY 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ókulcsok esetén használja {date} és {time} jogkivonatokat az eseménymezőkből az elérési út mintájában. Válassza ki a dátumformátumot, például YYYY/MM/DD: , DD/MM/YYYYvagy MM-DD-YYYY. HH az időformátumot használja. A blobkimenetet egyetlen egyéni eseményattribútum {fieldname} vagy {datetime:\<specifier>}. 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ában (/például) perjel szimbólumot használ, a rendszer üres mappákat hoz létre, /folder2/folder3amelyek nem láthatók a Storage Explorerben.
  • A 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ókat eredményezhet, ha az Azure-szolgáltatások, például az Azure Event Grid úgy vannak konfigurálva, hogy aktiválódjanak egy blobfájl frissítésében.
  • A Stream Analytics alapértelmezés szerint hozzáfűzi egy blobot. Ha a kimeneti formátum egy JSON-tömb, a fájl leállításkor vagy az időparticionált kimenetek következő alkalommali partíciójára való áthelyezésekor fejeződik be. Bizonyos esetekben, például a tisztátalan újraindításkor előfordulhat, hogy hiányzik a JSON-tömb záró szögletes zárójele (]).