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
- Kanály DLT
- 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 zpracováním 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í tento článek označuje příjem dat téměř v reálném čase jako streamovací příjem a méně časté přírůstkové zpracování jako přírůstkový dávkový příjem.
Příjem datového proudu
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 DLT a dotazy SQL Databricks.
Poznámka:
Ke konfiguraci přírůstkového dávkového příjmu můžete použít všechny výpočetní a úlohové typy Azure Databricks. Streamovací příjem je podporován pouze v produkčním prostředí na výpočetních službách klasických úloh a DLT.
Ú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 streamování příjmu dat.
-
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 výchozí interval spouště processingTime ="500ms"
. 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í Scala, průběžný režim 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 s využitím DLT
Podobně jako úlohy můžou kanály DLT běžet buď v aktivované, 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 streamovací 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 ke konfiguraci kanálů příjmu dat z připojených systémů používá DLT. 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ů.