Azure Stream Analytics – írás a Delta Lake-táblába
A Delta Lake egy nyílt formátum, amely megbízhatóságot, minőséget és teljesítményt biztosít a data lake-ekhez. Az Azure Stream Analytics lehetővé teszi a streamelési adatok közvetlen írását a Delta Lake-táblákba egyetlen kódsor megírása nélkül.
A streamelemzési feladat konfigurálható úgy, hogy natív Delta Lake kimeneti összekötőn keresztül írjon egy új vagy egy előre létrehozott Delta-táblába egy Azure Data Lake Storage Gen2-fiókban. Ez az összekötő a deltatáblákhoz való nagy sebességű betöltésre van optimalizálva hozzáfűzési módban, és pontosan egyszeri szemantikát is biztosít, ami garantálja, hogy egyetlen adat sem vész el vagy duplikálódik. A valós idejű adatfolyamok Azure Event Hubsból Delta-táblákba való betöltésével alkalmi interaktív vagy kötegelt elemzéseket végezhet.
Delta Lake-konfiguráció
Ha adatokat szeretne írni a Delta Lake-ben, csatlakoznia kell egy Azure Data Lake Storage Gen2-fiókhoz. Az alábbi táblázat a Delta Lake-konfigurációhoz kapcsolódó tulajdonságokat sorolja fel.
Tulajdonság neve | Leírás |
---|---|
Eseményszerializációs formátum | A kimeneti adatok szerializálási formátuma. A JSON, CSV, AVRO, 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. |
Delta elérési út neve | A delta lake tábla megírásához használt elérési út a megadott tárolón belül. Tartalmazza a tábla nevét. További részletek 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. Az oszlop értékének sztring típusúnak kell lennie |
Az ADLS Gen2 konfiguráció teljes listájának megtekintéséhez tekintse meg az ALDS Gen2 áttekintését.
Delta Elérési út neve
A Delta Path Name az Azure Data Lake Storage Gen2-ben tárolt Delta Lake-tábla helyének és nevének megadására szolgál.
Választhat, hogy egy vagy több elérésiút-szegmens használatával határozza meg a deltatábla elérési útját és a deltatábla nevét. Az elérésiút-szegmens az egymást követő elválasztó karakterek (például a perjel /
) közötti sztring, amely egy virtuális könyvtár nevének felel meg.
A szegmens neve alfanumerikus, és szóközöket, kötőjeleket és aláhúzásjeleket tartalmazhat. A rendszer az utolsó elérési út szegmensét használja a táblanévként.
A Delta Path nevének korlátozásai közé tartoznak a következők:
- 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 aid
. - Nincs engedélyezve dinamikus {field} név. Például a(z) {ID} szöveg {ID} szövegként van kezelve.
- A nevet tartalmazó elérésiút-szegmensek száma nem haladhatja meg a 254-et.
Példák
Példák a Delta-elérési út nevére:
- 1. példa: WestUS/CA/factory1/device-table
- 2. példa: Teszt/bemutató
- 3. példa: mytable
Példa kimeneti fájlokra:
- A kiválasztott tároló alatt a címtár elérési útja,
WestEurope/CA/factory1
a deltatábla mappaneve pedig az eszköztáblázat lesz. - A kiválasztott tároló alatt a címtár elérési útja,
Test
a delta tábla mappa neve pedig demo lesz. - A kiválasztott tároló alatt a deltatábla mappaneve a mytable lesz.
Új tábla létrehozása
Ha még nincs delta lake-tábla ugyanazzal a névvel és a Delta Path név által megadott helyen, az Azure Stream Analytics alapértelmezés szerint létrehoz egy új Delta-táblát. Ez az új tábla a következő konfigurációval jön létre:
- Író 2. verziója
- Olvasó 1. verziója
- A tábla csak hozzáfűző
- A táblaséma az első észlelt rekord sémájával jön létre.
Írás a táblába
Ha már létezik egy Delta Lake-tábla ugyanazzal a névvel és a Delta Path név által megadott helyen, az Azure Stream Analytics alapértelmezés szerint új rekordokat ír a meglévő táblába.
Pontosan egyszer történő kézbesítés
A tranzakciónapló lehetővé teszi, hogy a Delta Lake pontosan egyszer garantálja a feldolgozást. Az Azure Stream Analytics pontosan egyszeri kézbesítést is biztosít, amikor adatokat ad ki az Azure Data Lake Storage Gen2-nek egyetlen feladat futtatása során.
Sémakényszerítés
A sémakényszerítés azt jelenti, hogy a rendszer kikényszeríti a tábla összes új írását, hogy íráskor kompatibilis legyen a céltábla sémájával az adatminőség biztosítása érdekében.
A kimeneti adatok összes rekordja a meglévő tábla sémájára lesz kivetítve. Ha a kimenet egy új delta táblába van írva, a táblaséma az első rekorddal jön létre. Ha a bejövő adatok egy plusz oszlopot tartalmaznak a meglévő táblázatsémához képest, akkor a rendszer a további oszlop nélkül írja be a táblába. Ha a bejövő adatokból hiányzik egy oszlop a meglévő táblázatsémához képest, akkor a rendszer a táblába írja az oszlopot null értékre.
Ha nincs metszet a deltatábla sémája és a streamelési feladat rekordjának sémája között, az sémakonvertálási hibapéldánynak minősül. Nem ez az egyetlen eset, amely sémakonvertálási hibának minősülne.
A sémaátalakítás sikertelensége esetén a feladat viselkedése a feladat szintjén konfigurált kimeneti adathiba-átadási szabályzatot követi.
Delta Log ellenőrzőpontok
A Stream Analytics-feladat rendszeresen hoz létre Delta Log ellenőrzőpontokat V1 formátumban. A deltanapló-ellenőrzőpontok a Delta-tábla pillanatképei, és általában a Stream Analytics-feladat által létrehozott adatfájl nevét tartalmazzák. Ha az adatfájlok száma nagy, akkor nagy ellenőrzőpontokhoz vezet, ami memóriaproblémákat okozhat a Stream Analytics-feladatban.
Korlátozások
- A dinamikus partíciókulcs (amely a rekordséma egy oszlopának nevét adja meg a Delta Pathban) nem támogatott.
- Több partícióoszlop nem támogatott. Ha több partícióoszlopra van szükség, javasoljuk, hogy használjon összetett kulcsot a lekérdezésben, majd adja meg partícióoszlopként.
- A lekérdezésben létrehozhat egy összetett kulcsot, például: "Standard kiadás LECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]".
- A Delta Lake-be való írás csak hozzáfűzést jelent.
- A lekérdezéstesztelés sémaellenőrzése nem érhető el.
- A Stream Analytics nem végzi el a kis méretű fájlok tömörítését.
- Minden adatfájl tömörítés nélkül jön létre.
- A Dátum és a Decimális típus nem támogatott.
- Az Író 7. vagy újabb verziójának meglévő tábláiba írófunkciókkal való írása sikertelen.
- Példa: A törlési vektorokkal rendelkező meglévő táblákba való írás sikertelen.
- A kivételek a changeDataFeed és a appendOnly Writer szolgáltatások.
- Amikor egy Stream Analytics-feladat adatokat ír egy Delta Lake-be, több Fájl hozzáadása műveletet is létrehozhat. Ha túl sok fájlművelet jön létre egyetlen köteghez, a Stream Analytics-feladat elakadhat.
- A létrehozott fájlműveletek számát számos tényező határozza meg:
- A köteg mérete. Ezt az adatkötet és a minimális sorok és maximális idő kötegelési paraméterei határozzák meg.
- A köteg partícióoszlop-értékeinek számossága.
- A köteghez létrehozott fájlműveletek számának csökkentéséhez hajtsa végre a következő lépéseket:
- A kötegelési konfigurációk minimális sorainak és maximális idejének csökkentése
- Csökkentse a partícióoszlop értékeinek számosságát a bemeneti adatok finomhangolásával vagy egy másik partícióoszlop kiválasztásával
- A létrehozott fájlműveletek számát számos tényező határozza meg:
- A Stream Analytics-feladatok csak egyrészes V1 ellenőrzőpontok olvasására és írására képesek. A többrészes ellenőrzőpontok és a Checkpoint V2 formátum nem támogatott.