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) |
| Klasické deklarativní kanály Lakeflow Spark | Nepodporováno (viz poznámka níže) |
| Deklarativní kanály Sparku Lakeflow bez serveru | Nepodporováno (viz poznámka níže) |
| Serverless | Nepodporováno |
Note
Režim v reálném čase není podporován jako přímý typ triggeru strukturovaného streamování v rámci deklarativních kanálů Sparku Lakeflow. Deklarativní kanály Sparku lakeflow však podporují režim v reálném čase prostřednictvím konfigurace na úrovni kanálu. Viz Použití režimu v reálném čase v deklarativních kanálech Sparku Lakeflow.
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 | ✓ |
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
| Operátor | 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 | – (stav je nevázaný) |
| OdstraněníDuplicitVeVodoznaku | Nepodporováno |
Připojení streamu k tabulce
| Operátor | Podporováno |
|---|---|
| Spojení tabulky všesměrové (tabulka by měla být malá) | ✓ |
| Připojení streamu ke streamu | Nepodporováno |
| (plochý)MapGroupsWithState | Nepodporováno |
| transformWithState | – (s některými rozdíly) |
| sjednocení | – (s určitými omezeními) |
| forEach | ✓ |
| forEachBatch | Nepodporováno |
| mapPartitions | Nepodporováno (viz omezení) |
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 (Uživateli – Python) | ✓ |
| 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.