Share via


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:
  • Nem engedélyezett dinamikus egyéni {field} név, ha az írási mód egyszeres.
  • 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- é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:
  • 1. példa: fürt1/naplók/{date}/{time}
  • 2. példa: cluster1/logs/{date}
  • 3. példa: fürt1/{client_id}/{date}/{time}
  • 4. példa: cluster1/{datetime:ss}/{myField} ahol a lekérdezés a következő: Standard kiadás LECT 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

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:
  • 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é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.

Következő lépések