Streamování a přírůstkové příjem dat
Azure Databricks používá strukturované streamování Apache Sparku k zálohování řady produktů přidružených k úlohám příjmu dat, mezi které patří:
- Automatický zavaděč
COPY INTO
- Datové toky Delta Live Tables
- Materializovaná zobrazení a streamované tabulky v Databricks SQL
Tento článek popisuje některé rozdíly mezi sémantikou streamování a přírůstkového dávkového zpracování a poskytuje obecný přehled konfigurace úloh příjmu dat pro požadovanou sémantiku v Databricks.
Jaký je rozdíl mezi streamováním a přírůstkovým příjmem dávek?
Možné konfigurace pracovního postupu příjmu dat se liší od zpracování téměř v reálném čase až po občasné přírůstkové dávkové zpracování. Oba vzory používají strukturované streamování Apache Sparku k výkonu přírůstkového zpracování, ale mají jinou sémantiku. Pro zjednodušení se tento článek týká příjmu dat téměř v reálném čase jako příjmu dat streamování a zřídkajšího přírůstkového zpracování jako přírůstkového příjmu dávek.
Ingestování streamování
Streamování v kontextu příjmu dat a aktualizací tabulek odkazuje na zpracování dat téměř v reálném čase, kdy Azure Databricks ingestuje záznamy ze zdroje do jímky v mikrobatchech pomocí infrastruktury always-on. Úloha streamování nepřetržitě ingestuje aktualizace z nakonfigurovaných zdrojů dat, pokud nedojde k selhání, které zastaví příjem dat.
Přírůstkové dávkové ingestování
Přírůstkové dávkové zpracování se vztahuje na vzor, kde jsou všechny nové záznamy zpracovány ze zdroje dat v krátkodobém procesu. Přírůstkové dávkové ingestování často probíhá podle plánu, ale může se aktivovat také ručně nebo na základě doručení souboru.
Přírůstkové přijímání dávek se liší od dávkového příjmu dat, protože automaticky detekuje nové záznamy ve zdroji dat a ignoruje záznamy, které už byly ingestovány.
Příjem dat pomocí úloh
Úlohy Databricks umožňují orchestrovat pracovní postupy a plánovat úlohy, které zahrnují poznámkové bloky, knihovny, kanály Delta Live Tables a dotazy SQL Databricks.
Poznámka:
Ke konfiguraci přírůstkového příjmu dávek můžete použít všechny výpočetní typy a typy úloh Azure Databricks. Příjem streamů je podporován pouze v produkčním prostředí u klasické výpočetní úlohy a Delta Live Tables.
Úlohy mají dva primární režimy provozu:
- Průběžné úlohy se automaticky opakují, pokud dojde k selhání. Tento režim je určený pro příjem dat streamování.
-
Aktivované úlohy spouští úlohy při aktivaci. Mezi triggery patří:
- Triggery založené na čase, které spouštějí úlohy podle zadaného plánu.
- Triggery založené na souborech, které spouštějí úlohy, když soubory přistanou do zadaného umístění.
- Další triggery, jako jsou volání rozhraní REST API, spouštění příkazů rozhraní příkazového řádku Azure Databricks nebo kliknutí na tlačítko Spustit nyní v uživatelském rozhraní pracovního prostoru.
Pro přírůstkové dávkové úlohy nakonfigurujte úlohy pomocí režimu triggeru AvailableNow
následujícím způsobem:
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")
Pro úlohy streamování je processingTime ="500ms"
výchozí interval triggeru . Následující příklad ukazuje, jak zpracovat mikrodávku každých 5 sekund:
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")
Důležité
Bezserverové úlohy nepodporují intervaly aktivačních událostí Scala, průběžného režimu ani časové intervaly pro strukturované streamování. Klasické úlohy použijte, pokud potřebujete sémantiku příjmu dat téměř v reálném čase.
Příjem dat pomocí dynamických tabulek Delta
Podobně jako u úloh, potoky Delta Live Tables můžou běžet buď v aktivovaném, nebo průběžném režimu. Pro sémantiku streamování téměř v reálném čase s tabulkami streamování použijte průběžný režim.
Pomocí streamovacích tabulek můžete nakonfigurovat streamování nebo přírůstkové dávkové příjem dat z cloudového úložiště objektů, Apache Kafka, Amazon Kinesis, Google Pub/Sub nebo Apache Pulsar.
LakeFlow Connect používá Delta Live Tables k konfiguraci datových kanálů z připojených systémů. Viz LakeFlow Connect.
Materializovaná zobrazení zaručují sémantiku operací ekvivalentní dávkových úlohám, ale můžou optimalizovat mnoho operací pro výpočet výsledků přírůstkově. Viz Přírůstková aktualizace pro materializovaná zobrazení.
Příjem dat pomocí Databricks SQL
K konfiguraci přírůstkového načítání dávkových dat z cloudového objektového úložiště, Apache Kafka, Amazon Kinesis, Google Pub/Sub nebo Apache Pulsar můžete použít tabulky streamování.
Pomocí materializovaných zobrazení můžete nakonfigurovat přírůstkové dávkové zpracování ze zdrojů Delta. Viz Přírůstková aktualizace pro materializovaná zobrazení.
COPY INTO
poskytuje známou syntaxi SQL pro přírůstkové dávkové zpracování datových souborů v cloudovém úložišti objektů.
COPY INTO
chování je podobné vzorům podporovaným tabulkami streamování pro cloudové úložiště objektů, ale ne všechna výchozí nastavení jsou ekvivalentní pro všechny podporované formáty souborů.