Azure Stream Analytics: Írás 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 használatával közvetlenül írhat streamelési adatokat a Delta Lake-táblákba egyetlen kódsor írása nélkül.
A Stream Analytics-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 Delta-táblákhoz való nagy sebességű betöltésre van optimalizálva Hozzáfűzés módban. Emellett pontosan egyszeri szemantikát is biztosít, amely 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 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, 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. |
Delta elérési út neve | 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ó a következő szakaszban található. |
Partícióoszlop | Opcionális. A {field} kimeneti adatoktól a partícióig. Csak egy partícióoszlop támogatott. Az oszlop értékének típusnak string kell lennie. |
A Data Lake Storage Gen2 konfigurációjának teljes listáját az Azure Data Lake Storage Gen2 áttekintésében találja.
Delta elérési út neve
A Delta elérési út neve a Data Lake Storage Gen2-ben tárolt Delta Lake-tábla helyének és nevének megadására szolgál.
Egy vagy több elérésiút-szegmens használatával meghatározhatja a Delta tábla elérési útját és a Delta-tá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-elérési út nevének korlátozásai 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
. - Nem engedélyezett dinamikus
{field}
név. Például{ID}
{ID} szövegként van kezelve. - A nevet alkotó 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:
Test/demo
- 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 Delta tábla mappa neve pedig eszköztábla. - A kiválasztott tároló alatt a könyvtár elérési útja,
Test
a Delta tábla mappa neve pedig demo. - A kiválasztott tároló alatt a Delta tábla mappa neve a mytable.
Új tábla létrehozása
Ha még nincs azonos nevű Delta Lake-tábla, és a Delta elérési útja által megadott helyen van, a 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- es 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 egy Delta Lake-tábla már létezik ugyanazzal a névvel és a Delta útvonalnév által megadott helyen, a Stream Analytics alapértelmezés szerint új rekordokat ír a meglévő táblába.
Pontosan egyszeri kézbesítés
A tranzakciónapló lehetővé teszi, hogy a Delta Lake pontosan egyszeri feldolgozást garantáljon. A Stream Analytics pontosan egyszeri kézbesítést is biztosít, amikor adatokat ad ki a 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 Delta-tábla sémája és a streamelési feladat rekordjának sémája között, a rendszer sémakonverziós hibapéldánynak számít. Nem ez az egyetlen eset, amely sémakonvertálási hibának minősül.
A sémaátalakítás sikertelensége esetén a feladat viselkedése a feladat szintjén konfigurált kimeneti adathiba-kezelési szabályzatot követi.
Delta-napló ellenőrzőpontjai
A Stream Analytics-feladat rendszeresen hoz létre Delta-napló 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, az nagy ellenőrzőpontokhoz vezet, ami memóriaproblémákat okozhat a Stream Analytics-feladatban.
Korlátozások
- A dinamikus partíciókulcs (a rekordséma egy oszlopának nevének megadása a Delta útvonalon) nem támogatott.
- Több partícióoszlop nem támogatott. Ha több partícióoszlopot szeretne, javasoljuk, hogy használjon összetett kulcsot a lekérdezésben, majd adja meg partícióoszlopként.
- A lekérdezésben összetett kulcs hozható létre. Például:
"SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]"
.
- A lekérdezésben összetett kulcs hozható létre. Például:
- 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ájl hozzáadása művelet jön létre egyetlen köteghez, egy Stream Analytics-feladat elakadhat.
- A létrehozott Fájl hozzáadása mű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 a 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ájl hozzáadása műveletek számának csökkentése:
- Csökkentse a kötegelési konfigurációk minimális sorait és maximális idejét.
- Csökkentse a partícióoszlop értékeinek számosságát a bemeneti adatok módosításával vagy egy másik partícióoszlop kiválasztásával.
- A létrehozott Fájl hozzáadása mű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 az ellenőrzőpont V2 formátuma nem támogatott.