Streamelés és növekményes betöltés
Az Azure Databricks az Apache Spark strukturált streamelést használja a betöltési számítási feladatokhoz társított számos termék visszavételéhez, beleértve a következőket:
- Automatikus betöltő
COPY INTO
- DLT-csővezetékek
- Anyagiasított nézetek és streaming táblák a Databricks SQL-ben
Ez a cikk a streamelés és a növekményes kötegfeldolgozás szemantikája közötti néhány különbséget ismerteti, és magas szintű áttekintést nyújt a betöltési számítási feladatok konfigurálásáról a Databricksben a kívánt szemantikához.
Mi a különbség a streamelés és a növekményes kötegbetöltés között?
A betöltési munkafolyamat lehetséges konfigurációi az úgynevezett valós idejű feldolgozástól a ritkábban alkalmazott növekményes kötegelt feldolgozásig terjednek. Mindkét minta apache Spark strukturált streamelést használ a növekményes feldolgozáshoz, de eltérő szemantikával rendelkezik. Az egyszerűség kedvéért ez a cikk a közel valós idejű betöltést streambetöltésként, a ritkán növekményes feldolgozást pedig növekményes kötegbetöltésként említi.
Streamek feldolgozása
A streamelés az adatbetöltés és a táblafrissítések kontextusában közel valós idejű adatfeldolgozásra utal, ahol az Azure Databricks a rekordokat a forrásból a célhelyre helyezi folytonos üzemelésű infrastruktúrával. A streamelési számítási feladatok folyamatosan betöltik a frissítéseket a konfigurált adatforrásokból, kivéve, ha olyan hiba történik, amely leállítja a betöltést.
Növekményes kötegbetöltés
A növekményes kötegbetöltés olyan mintát jelent, amelyben az összes új rekordot egy rövid élettartamú feladatban egy adatforrásból dolgoznak fel. A növekményes kötegbetöltés gyakran ütemezés szerint történik, de manuálisan vagy a fájl érkezése alapján is aktiválható.
A növekményes kötegbetöltés abban különbözik a kötegbetöltéstől, hogy automatikusan észleli az adatforrás új rekordjait, és figyelmen kívül hagyja a már betöltött rekordokat.
Adatbetöltés feladatokkal
A Databricks Jobs lehetővé teszi a munkafolyamatok vezénylésére és a jegyzetfüzeteket, tárakat, DLT-folyamatokat és Databricks SQL-lekérdezéseket tartalmazó feladatok ütemezését.
Feljegyzés
A növekményes kötegbetöltés konfigurálásához az összes Azure Databricks számítási típust és feladattípust használhatja. A streambetöltés csak a klasszikus feladatok számítási és DLT-alapú éles környezetében támogatott.
A feladatok két elsődleges működési móddal rendelkeznek:
- A folyamatos feladatok automatikusan újrapróbálkoznak, ha hibát tapasztalnak. Ez a mód streamelési betöltésre szolgál.
-
A meghívott feladatok akkor futnak, amikor aktiválva vannak. Az eseményindítók a következők:
- Időalapú eseményindítók, amelyek meghatározott ütemezés szerint futtatnak feladatokat.
- Fájlalapú eseményindítók, amelyek feladatokat futtatnak, amikor a fájlok egy megadott helyen landítanak.
- Egyéb eseményindítók, például REST API-hívások, Azure Databricks CLI-parancsok végrehajtása, vagy a Futtatás most gombra kattintva a munkaterület felhasználói felületén.
Inkrementális kötegelt feladatok esetén konfigurálja a feladatokat az AvailableNow
eseményindító mód használatával a következőképpen:
Python
(df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(availableNow=True)
.toTable("table_name")
)
Scala
import org.apache.spark.sql.streaming.Trigger
df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(Trigger.AvailableNow)
.toTable("table_name")
Streamelési számítási feladatok esetén az alapértelmezett triggerelési időköz processingTime ="500ms"
. Az alábbi példa bemutatja, hogyan lehet 5 másodpercenként feldolgozni egy mikro köteget:
Python
(df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(processingTime="5 seconds")
.toTable("table_name")
)
Scala
import org.apache.spark.sql.streaming.Trigger
df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(Trigger.ProcessingTime, "5 seconds")
.toTable("table_name")
Fontos
A kiszolgáló nélküli feladatok nem támogatják a Scala, a folyamatos mód vagy az időalapú triggerintervallumokat a strukturált streameléshez. Használjon klasszikus feladatokat, ha közel valós idejű adatbetöltési szemantikára van szüksége.
Betöltés DLT-vel
A Jobs-hoz hasonlóan a DLT-folyamatok indított vagy folyamatos módban futtathatók. A közel valós idejű streamelési szemantika érdekében, streamelési táblák esetén használjon folyamatos üzemmódot.
Streamelőtáblák használatával konfigurálhatja a streamelést vagy növekményes kötegbetöltést a felhőobjektum-tárolóból, az Apache Kafkából, az Amazon Kinesisből, a Google Pub/Subból vagy az Apache Pulsarból.
A Lakeflow Connect DLT használatával konfigurálja a csatlakoztatott rendszerekből származó betöltési folyamatokat. Lásd: Lakeflow Connect.
A materializált nézetek garantálják a kötegelt számítási feladatoknak megfelelő műveleti szemantikát, de számos műveletet optimalizálhatnak az eredmények növekményes kiszámításához. Lásd a materializált nézetek növekményes frissítését.
Betöltés a Databricks SQL-vel
Streamelőtáblák használatával konfigurálhatja a növekményes kötegbetöltést a felhőalapú objektumtárolóból, az Apache Kafkából, az Amazon Kinesisből, a Google Pub/Subból vagy az Apache Pulsarból.
A materializált nézetek használatával növekményes kötegelt feldolgozást konfigurálhat Delta-forrásokból. Lásd a materializált nézetek növekményes frissítését.
COPY INTO
A felhőalapú objektumtárban lévő adatfájlok növekményes kötegelt feldolgozásához ismert SQL-szintaxist biztosít.
COPY INTO
a viselkedés hasonló a felhőobjektum-tároló streamelőtáblái által támogatott mintákhoz, de nem minden alapértelmezett beállítás felel meg az összes támogatott fájlformátumnak.