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.
Podporované jazyky
Režim v reálném čase podporuje Scala, Java a Python.
Typy výpočetních prostředků
Režim v reálném čase podporuje následující typy výpočetních prostředků:
| Typ výpočetních prostředků | Podporováno |
|---|---|
| Dedicated (dříve: jeden uživatel) | ✓ |
| Standard (dříve: sdíleno) | – (pouze Python) |
| Kanály Lakeflow v klasickém prostředí | Nepodporuje se jako strukturované streamování. Podporuje se prostřednictvím konfigurace kanálu. Viz Použití režimu v reálném čase v kanálech Lakeflow. |
| Kanály Lakeflow na bezserverové službě | Nepodporuje se jako strukturované streamování. Podporuje se prostřednictvím konfigurace kanálu. Viz Použití režimu v reálném čase v kanálech Lakeflow. |
| Serverless | Nepodporováno |
V případě úloh citlivých na latenci s funkcemi definovanými uživatelem doporučuje Databricks používat vyhrazený režim přístupu. Viz Funkce tabulky.
Režimy provádění
Režim v reálném čase podporuje pouze režim aktualizace:
| Režim spuštění | Podporováno |
|---|---|
| Režim aktualizace | ✓ |
| režim přidávání | Nepodporováno |
| Režim dokončení | Nepodporováno |
Zdroje a jímky
Režim v reálném čase podporuje následující zdroje a jímky:
| Zdroj nebo jímka | Jako zdroj | Jako jímka |
|---|---|---|
| Apache Kafka | ✓ | ✓ |
| Event Hubs (pomocí konektoru Kafka) | ✓ | ✓ |
| Kinesis | – (pouze režim EFO) | Nepodporováno |
| AWS MSK | ✓ | Nepodporováno |
| Delta | Nepodporováno | Nepodporováno |
| Google Pub/Sub (služba pro zasílání zpráv) | Nepodporováno | Nepodporováno |
| Apache Pulsear | Nepodporováno | Nepodporováno |
Libovolné jímky (pomocí forEachWriter) |
Není relevantní | ✓ |
Operátoři
Režim v reálném čase podporuje většinu operátorů strukturovaného streamování:
Bezstavové operace
| Operátor | Podporováno |
|---|---|
| Výběr | ✓ |
| Projekce | ✓ |
mapPartitions |
Nepodporováno (viz omezení) |
| Union | – (s určitými omezeními) |
UDFs
| Operátor | Podporováno |
|---|---|
| Scala UDF | – (s určitými omezeními) |
| Uživatelsky definovaná funkce v Pythonu | – (s určitými omezeními) |
Aggregation
| Function | Podporováno |
|---|---|
| součet | ✓ |
| počet | ✓ |
| max | ✓ |
| min | ✓ |
| avg | ✓ |
| Agregační funkce | ✓ |
Windowing
| Operátor | Podporováno |
|---|---|
| Tumbling | ✓ |
| Sliding | ✓ |
| Session | Nepodporováno |
Deduplication
| Operátor | Podporováno |
|---|---|
| odstraněníDuplicit | ✓ |
| OdstraněníDuplicitVeVodoznaku | ✓ |
Připojení streamu k tabulce
| Operátor | Podporováno |
|---|---|
| Vnitřní spojení | ✓ |
| Vnější spojení | ✓ |
| Spojení tabulky všesměrového vysílání (velikost tabulky 10 mb nebo menší) | ✓ |
| Spojení tabulky (bez vysílání) | Nepodporováno |
Připojení streamu ke streamu
| Operátor | Podporováno |
|---|---|
| Vnitřní spojení | – (Databricks Runtime 18 a novější, s některými konfiguracemi) |
| Vnější spojení | Nepodporováno |
Note
Pokud chcete stream použít ke streamování spojení v režimu v reálném čase, musíte nastavit další konfigurace Sparku. Další informace o konfiguracích a požadavcích na spouštění více datových proudů najdete v tématu Stream to stream joins.
Libovolný stavový operátor
| Operátor | Podporováno |
|---|---|
| (plochý)MapGroupsWithState | Nepodporováno |
| transformWithState | – (s některými rozdíly) |
Uživatelsky definované jímky
| Dřez | Podporováno |
|---|---|
| forEach | ✓ |
| forEachBatch | Nepodporováno |
Zvláštní aspekty
Některé operátory a funkce mají při použití v režimu v reálném čase specifické aspekty nebo rozdíly.
transformWithState v režimu v reálném čase
Pro vytváření vlastních stavových aplikací podporuje transformWithStateDatabricks rozhraní API ve strukturovaném streamování Apache Sparku. Další informace o rozhraní API a fragmentech kódu najdete v tématu Vytvoření vlastní stavové aplikace .
Rozhraní API se ale chová jinak v režimu v reálném čase než v dotazech mikrodávkové dávky.
- Režim v reálném čase volá metodu
handleInputRows(key: String, inputRows: Iterator[T], timerValues: TimerValues)pro každý řádek.-
inputRowsIterátor vrátí jednu hodnotu. Režim mikrodávkový ho volá pro každý klíč jednou ainputRowsiterátor vrátí všechny hodnoty pro klíč v mikrodávce. - Při psaní kódu je potřeba počítat s tímto rozdílem.
-
- Časovače událostí nejsou podporovány v režimu v reálném čase.
-
transformWithStateInPandasnení podporován v režimu v reálném čase. Místo toho použijte rozhraní API založené natransformWithStateřádcích, které místo datových rámců pandas používáRowobjekty. - V režimu v reálném čase jsou časovače zpožděné v závislosti na doručení dat:
- Pokud je časovač naplánovaný na 10:00:00, ale nedorazí žádná data, časovač se neaktivuje okamžitě.
- Pokud data přicházejí v 10:00:10, časovač se aktivuje se zpožděním 10 sekund.
- Pokud žádná data nedorazí a dlouhotrvající dávka se chystá k ukončení, časovač se aktivuje před ukončením dávky.
Note
Pokud v Databricks Runtime 18.1 a níže použijete transformWithState a režim v reálném čase pro Python s nízkou propustností, méně než 5 záznamů za sekundu, může se zobrazit zvýšená latence až o několik set milisekund. Databricks doporučuje upgradovat na Databricks Runtime 18.2 a vyšší, aby se vyřešilo.
Python uživatelem v režimu v reálném čase
Databricks podporuje většinu Python uživatelem definovaných funkcí (UDF) v režimu v reálném čase:
Bezstavové
| Typ UDF | Podporováno |
|---|---|
| Python skalární funkce definované uživatelem (Python skalární funkce definované uživatelem) | ✓ |
| Skalární UDF se šipkami | ✓ |
| Skalární UDF pandas (uživatelem definované funkce pandas) | ✓ |
Funkce Šipková (mapInArrow) |
✓ |
| Funkce Pandas (Map) | ✓ |
Stavové seskupení (UDAF)
| Typ UDF | Podporováno |
|---|---|
transformWithState (pouze Row rozhraní) |
✓ |
transformWithStateInPandas |
Nepodporováno. Místo toho použijte rozhraní API založené na transformWithState řádcích, které místo datových rámců pandas používá Row objekty. Podrobnosti nejsou transformWithStateInPandas podporované . |
applyInPandasWithState |
Nepodporováno |
Nestavové seskupení (UDAF)
| Typ UDF | Podporováno |
|---|---|
apply |
Nepodporováno |
applyInArrow |
Nepodporováno |
applyInPandas |
Nepodporováno |
Tabulkové funkce
| Typ UDF | Podporováno |
|---|---|
| UDTF (Python uživatelem definované funkce tabulek (UDTFs) ) | Nepodporováno |
| UC UDF | Nepodporováno |
Při použití Python uživatelem definovaných funkcí v režimu v reálném čase je potřeba vzít v úvahu několik bodů:
- Pokud chcete minimalizovat latenci, nastavte velikost dávky šipky (
spark.sql.execution.arrow.maxRecordsPerBatch) na 1.- Kompromis: Tato konfigurace optimalizuje latenci na úkor propustnosti. U většiny úloh se toto nastavení doporučuje.
- Zvětšete velikost dávky pouze tehdy, když je požadována vyšší propustnost, aby se přizpůsobilo množství vstupních dat, při přijetí potenciálního zvýšení latence.
- UDF a funkce Pandas nefungují dobře s velikostí dávky Arrow 1.
- Pokud používáte UDF nebo funkce pandas, nastavte velikost dávky Arrow na vyšší hodnotu (například 100 nebo vyšší).
- To znamená vyšší latenci. Databricks doporučuje použít funkci UDF nebo šipku, pokud je to možné.
-
transformWithStateInPandasnení podporován v režimu v reálném čase. Místo toho použijte rozhraní API založené natransformWithStateřádcích, které místo datových rámců pandas používáRowobjekty. Podívejte se natransformWithStateInPandasnepodporuje a příklady režimu Real-time pro funkční Python příklad s použitím rozhraní API založeného na řádcích. - V případě úloh citlivých na latenci s funkcemi definovanými uživatelem doporučuje Databricks používat vyhrazený režim přístupu. V režimu standardního přístupu můžou režijní náklady na izolaci zabezpečení zpomalit výkon UDF.