Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka popisuje, jak zvolit správnou konfiguraci pro úlohy bezserverového streamování na Azure Databricks, včetně průběžných kanálů, přírůstkového příjmu dat a spravovaných konektorů. Volba správné konfigurace závisí na potřebách zdroje, tvaru a latence datového proudu.
Co se počítá jako úloha streamování
Streamovací úloha čte neomezený datový proud ze zdroje (například z cloudového objektového úložiště, sběrnice zpráv nebo kanálu změn) a průběžně jej zapisuje do cílového úložiště. Azure Databricks podporuje dva vzory úloh streamování:
- Průběžný: Kanál, který se spouští bez zastavení a zpracovává nová data při jejich doručení. Latence se měří v sekundách.
- Přírůstkové (označované také jako aktivované): Kanál, který běží podle plánu nebo triggeru, zpracovává všechna data, která přišla od posledního spuštění, a zastaví se. Latence se měří v minutách.
Některé úlohy vypadají jako streamovací pipeline, ale z technického hlediska jimi nejsou. Mezi příklady patří služba, která obsahuje websocket otevřený pro naslouchání událostem, chatovací aplikaci, která udržuje trvalé připojení na uživatele nebo příjemce webhooku, který zpracovává příchozí požadavky HTTP. Jedná se o aplikace, nikoli kanály streamování. Správnou bezserverovou možnost pro tyto úlohy najdete v tématu Úlohy, které nejsou kanály streamování.
Volba správné konfigurace streamování
Tato tabulka přiřazuje jednotlivé případy použití k serverless konfiguracím, které jim nejlépe odpovídají. Oddíly, které na této stránce následují, poskytují podrobnější informace o těchto doporučeních.
| Případ použití | Doporučená konfigurace | Proč |
|---|---|---|
| Průběžné streamování ETL nebo transformace s nízkou latencí | Lakeflow Spark Declarative Pipelines v kontinuálním režimu | Nepřetržitý režim je určen pro trvale aktivní streamy. Kanálování streamu spouští mikrobatchy souběžně a zlepšuje propustnost a latenci. Spravovaný stav zajišťuje automatickou obnovu. |
| Přírůstkový příjem dat z cloudového úložiště | Použijte Auto Loader v deklarativních kanálech Lakeflow Spark (pro nízkou latenci) nebo v bezserverové úloze s Trigger.AvailableNow() (pokud je přijatelná nižší latence). |
Auto Loader efektivně sleduje nové soubory.
Trigger.AvailableNow() zpracuje backlog a pak ukončí, což odpovídá plánovanému tempu nebo tempu na vyžádání. |
| Spravovaný příjem dat ze zdrojů SaaS nebo databáze CDC | Standardní konektory ve službě Lakeflow Connect | Plně spravované konektory s kanály příjmu dat bez serveru Pro podporované zdroje není vyžadován žádný kód. |
| Streamování SQL přes tabulky Delta | tabulky streamování | Přírůstkové zpracování nativní pro SQL pro zdroje orientované na přidávání dat se spravovanými datovými potrubími a obnovou. |
| Pravidelné mikrodávkové zpracování v poznámkovém bloku nebo úloze |
Bezserverová úloha s využitím Trigger.AvailableNow() |
Nákladově efektivní, když je dostatek aktuálnosti na úrovni minut. Bezserverové výpočetní prostředí se rychle spustí a po dokončení dávky se ukončí. |
Průběžné streamování
Pro průběžné streamování na bezserverových výpočetních prostředcích použijte deklarativní kanály Sparku Lakeflow v průběžném režimu. Kanál zpracování zůstává spuštěný, zpracovává záznamy, jakmile přicházejí, a po selhání se automaticky obnoví.
Konfigurovat nepřetržitý datový proud:
- Nakonfigurujte kanál jako bezserverový. Viz Konfigurace bezserverového kanálu.
- Nastavte režim pipeline na nepřetržitý. Viz Aktivovaný vs. průběžný režim potrubí.
- Používejte streamované tabulky pro přírůstkově udržované výstupy.
Tip
Řetězení streamů je ve výchozím nastavení povoleno v serverless Lakeflow Spark Declarative Pipelines. Mikrobatchy běží souběžně, nikoli postupně, což zlepšuje propustnost datových proudů náročných na příjem dat.
Triggery strukturovaného streamování založené na čase, například Trigger.ProcessingTime(interval) a Trigger.Continuous(interval), nejsou dostupné v bezserverových poznámkových blocích nebo úlohách. Použijte deklarativní datové kanály Lakeflow Spark v kontinuálním režimu pro scénář nepřetržitého provozu. Viz omezení streamování.
Trigger.Once() je podporována, ale zastaralá – migrujte existující dotazy na Trigger.AvailableNow().
Inkrementální a spouštěné streamování
Pro přírůstkové streamování spusťte Structured Streaming v bezserverové úloze s Trigger.AvailableNow(). Každé spuštění zpracovává všechna data, která přišla od posledního kontrolního bodu, a pak se ukončí.
Konfigurace bezserverové úlohy s přírůstkovým streamováním:
- Naplánujte úlohu v požadovaném tempu. Viz Spuštění úloh podle plánu.
- Použijte
Trigger.AvailableNow()u každého streamovacího dotazu v úloze. Viz Konfigurace intervalů triggeru strukturovaného streamování. - Velikost dávky upravte pomocí
maxFilesPerTriggernebomaxBytesPerTrigger, aby byla spotřeba paměti předvídatelná. Podívejte se na osvědčené postupy pro výpočetní prostředky bez serveru.
Následující příklad načítá nové soubory z cloudového úložiště (source_path) pomocí Auto Loaderu, zpracovává všechna data dostupná v době běhu a zapisuje je do tabulky Delta:
(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json")
.option("cloudFiles.maxFilesPerTrigger", 1000)
.load(source_path)
.writeStream
.trigger(availableNow=True)
.option("checkpointLocation", checkpoint_path)
.toTable("catalog.schema.target_table"))
Naplánovaná Trigger.AvailableNow() úloha je nákladově nejefektivnější model streamování na bezserverových výpočetních prostředcích, pokud je přijatelná latence na úrovni minut. Výpočetní instance se během několika sekund spustí, zpracuje dávku a poté se vypne.
Spravovaný příjem dat
Pokud je zdrojem aplikace SaaS nebo provozní databáze, místo psaní kódu strukturovaného streamování použijte Lakeflow Connect. Lakeflow Connect spouští kanály příjmu dat bez serveru pro konektory, jako jsou Salesforce, Workday, SQL Server CDC a PostgreSQL CDC. Podívejte se na spravované konektory v Lakeflow Connect.
Tato cesta je správná odpověď, když:
- Pro váš zdroj existuje konektor.
- Chcete spravovaný kanál místo vlastního kódu.
- Potřebujete evoluci schématu, sledování původu dat a monitorování ihned po nasazení.
Přírůstkové zpracování dat spravovaných SQL
Pro týmy upřednostňující SQL použijte streamingové tabulky pro streamovací úlohy nativní pro SQL. Streamované tabulky můžete definovat uvnitř deklarativních kanálů Sparku Lakeflow nebo jako samostatné streamovací tabulky.
U samostatných streamovacích tabulek vytvořených příkazem SQL CREATE OR REFRESH STREAMING TABLE začínají počáteční aktualizace a naplnění daty okamžitě. Pro každou streamovací tabulku se automaticky vytvoří a spravuje vyhrazené bezserverové potrubí systémem.
Pokud potřebujete výsledky dávkových sémantických dotazů se spravovaným obnovením, použijte místo toho materializovaná zobrazení. Podívejte se na Materializovaná zobrazení.
Pracovní zátěže, které nejsou streamovacími datovými potrubími
Pracovní zátěž, která potřebuje udržovat dlouhodobé připojení, naslouchat na portu nebo reagovat na příchozí požadavky HTTP, není streamovací kanál; je to aplikace. Tyto úlohy nespustíte v bezserverové úloze. Správné možnosti Databricks jsou:
- Dlouhotrvající služby, které potřebují trvalé připojení nebo koncový bod HTTP: Sestavte službu pomocí Služby Databricks Apps. Databricks Apps je bezserverová platforma pro hostování vlastních aplikací na Azure Databricks, včetně Aplikací FastAPI, Flask, Streamlit, Dash, Gradio, Node.jsa Shiny. Podívejte se na Aplikace Databricks.
- Příchozí webhooky nebo naslouchače událostí: Vystavte koncový bod HTTP v Databricks Apps nebo ukončete webhook v externí službě a zapisujte události do cloudového úložiště nebo sběrnice zpráv; poté je zpracujte pomocí bezserverové streamovací pipeline.
- Vlastní token nebo výměna přihlašovacích údajů: Použijte instanční objekty služby s OAuth nebo volejte rozhraní REST API Databricks z aplikace. Streamovací kanály neudržují relace pro jednotlivé uživatele ani vlastní stav tokenů.
Pokud vyhodnocujete, jestli vaše úloha odpovídá kanálu streamování, zeptejte se:
- Čte úloha z nevázaného zdroje dat a zapisuje se do jímky? Pokud ano, jedná se o streamovací kanál.
- Musí úloha obsahovat otevřené připojení k klientovi? Pokud ano, jedná se o aplikaci; používat aplikace Databricks.
Omezení
Bezserverové výpočetní prostředky ukládají následující omezení streamování. Žádná z nich nebrání výše uvedeným úlohám při spárování se správným produktem.
- Triggery strukturovaného streamování založené na čase (
Trigger.ProcessingTime(interval)aTrigger.Continuous(interval)) nejsou podporované v bezserverových poznámkových blocích nebo úlohách. Deklarativní kanály Sparku Lakeflow používejte v průběžném režimu pro streamy always-on neboTrigger.AvailableNow()pro aktivovaná spuštění. Viz omezení streamování. - Dotazy streamování bez explicitního triggeru selžou .
INFINITE_STREAMING_TRIGGER_NOT_SUPPORTEDApache Spark ve výchozím nastavení používáTrigger.ProcessingTime("0 seconds"), které není podporováno v bezserverovém výpočetním prostředí. Vždy nastavteTrigger.AvailableNow()u každého streamovacího dotazu nebo použijte Lakeflow Spark Declarative Pipelines v kontinuálním režimu. - Všechna omezení streamování v režimu standardního přístupu platí také pro bezserverové výpočetní prostředky. Viz omezení streamování.
Další kroky
- Konfigurace bezserverového kanálu
- Spusťte úlohy Lakeflow na bezserverových výpočetních prostředcích
- Prozkoumejte spravované konektory v Lakeflow Connect