Zpracování v reálném čase
Streamovaná tabulka je tabulka Delta, která zahrnuje podporu streamování a přírůstkového zpracování dat. Na rozdíl od tradičních tabulek je streamovaná tabulka navržená tak, aby průběžně přijímala data při jejich doručení. Je aktualizován pomocí toků v rámci kanálu a je užitečný ve scénářích, ve kterých je nutné průběžně přijímat nebo transformovat nová data.
Tabulky streamování jsou zvláště užitečné pro příjem dat, protože zpracovávají každý vstupní řádek pouze jednou, což odpovídá většině úloh příjmu dat. Dokážou efektivně zpracovávat velké objemy dat jen pro připojení. Jsou také cenné v transformacích s nízkou latencí, protože můžou zpracovávat data v řádcích a časových oknech, spravovat velké objemy vstupu a poskytovat výsledky s minimálním zpožděním.
Jak fungují tabulky streamování
Když se aktualizuje streamovací tabulka, toky přidružené k ní čtou nové informace ze zdroje streamování a připojí je k tabulce. Tabulka je definována ve zdrojovém kódu kanálu a pouze tento kanál má oprávnění ho aktualizovat. Pokud je streamovaná tabulka vytvořená mimo kanál v Databricks SQL, systém automaticky vygeneruje skrytý kanál pro správu aktualizací.
V praxi může více toků připojit data ke stejné streamované tabulce. Koncepčně si můžete představit streamovací tabulku jako centrální cíl v procesu ETL, kde toky nepřetržitě dodávají nová data.
Vytváření streamovaných tabulek
V SQL můžete definovat streamovací tabulku s deklarativními kanály Lakeflow následujícím způsobem:
CREATE OR REFRESH STREAMING TABLE customers_bronze
AS SELECT * FROM STREAM read_files(
"/volumes/path/to/files",
format => "json"
);
Chování pouze připojení
Streamované tabulky jsou navržené tak, aby fungovaly se zdroji dat jen pro připojení. Jakmile se k tabulce připojí řádek, nebude znovu zpracován, ani když se dotaz definující změny tabulky. Pokud například původní dotaz transformuje názvy malými písmeny a později je upraví tak, aby je transformoval na velká písmena, řádky, které byly již připojeny, zůstanou malými písmeny. Aktualizovanou logikou se zpracovávají pouze nové řádky přicházející po změně. Pokud potřebujete aktualizovat všechny řádky pomocí nové transformace, musíte aktivovat úplnou aktualizaci kanálu.
Streamování s nízkou latencí
Tabulky streamování jsou optimalizované pro úlohy s nízkou latencí prostřednictvím správy kontrolních bodů. Fungují nejlépe při práci s ohraničenými datovými proudy. Přirozeně ohraničený datový proud nastane, když má zdroj dat jasný začátek a konec, například adresář souborů, které se neaktualizují po počáteční dávce. Dalším způsobem, jak vázat datový proud, je použití vodoznaku. Vodoznak ve strukturovaném streamování Sparku určuje, jak dlouho má systém čekat na pozdní příchod dat, než zavře časové období. Bez vodoznaku by nevázaný datový proud mohl nahromadět stav na neomezenou dobu, což vede k selháním kanálu způsobeným tlakem na paměť.
Připojení ke snímkům streamu
Streamované tabulky také podporují spojení mezi živým streamem a statickým snímkem tabulky dimenzí. V tomto scénáři se tabulka dimenzí považuje za snímek v okamžiku, kdy se datový proud spustí. Jakékoli změny dimenze po zahájení datového proudu se neprojeví ve spojení, pokud není tabulka dimenzí explicitně aktualizována. Tento přístup je často přijatelný v případech použití, kdy je tabulka faktů extrémně velká ve srovnání s tabulkou dimenzí a malá nesrovnalost je přijatelná.
Omezení streamovaných tabulek
Tabulky streamování mají následující omezení:
Omezený vývoj: Změna dotazů ovlivňuje pouze nové řádky; staré řádky zůstávají beze změny, pokud se neaktivuje úplná aktualizace.
Správa stavu: Vyžaduje omezené datové proudy nebo streamy s vodoznaky, aby nedocházelo k chybám.
Spojení se nekomputují: Spojení se neaktualizují, když se změní tabulky dimenzí. Pro vždy správná spojení použijte materializovaná zobrazení.