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


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.