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.
Databricks podporuje standardní syntaxi spojení ANSI. Tento článek popisuje rozdíly mezi spojeními pomocí dávkového zpracování a zpracování datových proudů.
Poznámka:
Databricks podporuje také standardní syntaxi pro operátory sady UNION, INTERSECTa EXCEPT. Viz operátory množin.
Rozdíly mezi streamováním a dávkovými spojeními
Spoje v Azure Databricks mohou být stavová nebo bezstavová.
Všechna dávková spojení jsou bezstavová spojení. Výsledky se okamžitě zpracovávají a odrážejí data v době spuštění dotazu. Při každém spuštění dotazu se na základě zadaných zdrojových dat vypočítají nové výsledky. Viz Připojení služby Batch.
Spojení mezi dvěma streamovanými zdroji dat jsou stavová. Ve stavových spojeních Azure Databricks sleduje informace o zdrojích dat a výsledcích a iterativně aktualizuje výsledky. Stavové spojení může poskytovat výkonná řešení pro online zpracování dat, ale jejich účinná implementace může být obtížná. Mají složitou provozní sémantiku v závislosti na výstupním režimu, intervalu triggeru a vodoznaku. Viz propojení dvou streamů.
Statické spojení streamu jsou bezstavová, ale poskytují dobrou možnost pro spojování přírůstkového zdroje dat (například tabulky faktů) se statickým zdrojem dat (například pomalu se měnící dimenzionální tabulkou). Místo spojení všech záznamů z obou stran při každém spuštění dotazu se k aktuální verzi statické tabulky připojí pouze nově přijaté záznamy ze zdroje streamování. Viz Stream-static joins.
Připojení služby Batch
Azure Databricks podporuje standardní syntaxi spojení SQL, včetně vnitřní, vnější, střední, anti a křížových spojení. Viz JOIN.
Poznámka:
Databricks doporučuje použít materializované zobrazení k optimalizaci přírůstkových výpočtů výsledků vnitřního spojení. Podívejte se na Materializovaná zobrazení.
Propojení stream-streamů
Spojení dvou streamovaných zdrojů dat může představovat významné problémy při správě informací o stavu a odůvodnění výpočtu a výstupu výsledků. Před implementací spojení datových proudů databricks doporučuje vyvinout silné znalosti provozní sémantiky pro stavové streamování, včetně toho, jak vodoznaky ovlivňují správu stavu. Podívejte se na následující články:
- Co je stavové streamování?
- Použití vodoznaků k řízení prahových hodnot zpracování dat
- Propojení streamů
Databricks doporučuje zadat vodoznaky pro obě strany všech spojení datových proudů. Podporují se následující typy spojení:
- Vnitřní spojení
- Levé vnější sloučení
- Pravé vnější spojení
- Úplná vnější spojení
- Levé poloviční spojení
Podívejte se na dokumentaci ke strukturovanému streamování Apache Sparku na spojování streamů.
Statické spojení streamu
Poznámka:
Popsané chování pro připojení stream-static předpokládá, že statická data jsou uložena pomocí Delta Lake.
Statické spojení streamu spojuje nejnovější platnou verzi tabulky Delta (statická data) s datovým proudem pomocí bezstavového spojení.
Když Azure Databricks zpracuje mikrodávku dat ve statickém spojení streamu, nejnovější platná verze dat ze statické tabulky Delta se spojí se záznamy, které jsou přítomné v aktuální mikrodávce. Vzhledem k tomu, že spojení je bezstavové, nemusíte konfigurovat vodoznaky a zpracovávat výsledky s nízkou latencí. Data ve statické tabulce Delta použitá ve spojení by se měla pomalu měnit.
Následující příklad ukazuje tento vzor:
streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")
query = (streamingDF
.join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
.writeStream
.option("checkpointLocation", checkpoint_path)
.table("orders_with_customer_info")
)
Tipy pro začlenění do Azure Databricks
Apache Spark podporuje zadávání návodů na rozsahová spojení a nerovnoměrná spojení. Rady pro nerovnoměrné spojení nejsou nezbytné, protože Azure Databricks tato spojení automaticky optimalizuje. Podívejte se na nápovědy
Nápovědy pro rozsahová spojení mohou být užitečné, pokud je výkon spojení nízký a provádíte nerovnostní spojení. Mezi příklady patří připojení k rozsahu časových razítek nebo rozsahu ID clusteringu. Viz Optimalizace připojení rozsahu a optimalizace výkonu spojení v Azure Databricks.