Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Támogatott nyelvek
A valós idejű mód támogatja a Scalát, a Java és a Python.
Számítási típusok
A valós idejű mód a következő számítási típusokat támogatja:
| Számítási típus | Támogatott |
|---|---|
| Dedikált (korábban: egyfelhasználós) | ✓ |
| Standard (korábban: megosztott) | ✓ (csak Python) |
| Lakeflow-folyamatok klasszikus rendszeren | Strukturált streamelésként nem támogatott. A folyamatkonfigurációval támogatott. Lásd: Valós idejű mód használata a Lakeflow-folyamatokban. |
| Lakeflow-folyamatok kiszolgáló nélküli rendszeren | Strukturált streamelésként nem támogatott. A folyamatkonfigurációval támogatott. Lásd: Valós idejű mód használata a Lakeflow-folyamatokban. |
| Kiszolgáló nélküli | Nem támogatott |
Az UDF-ekkel rendelkező késésre érzékeny számítási feladatok esetében a Databricks azt javasolja, hogy dedikált hozzáférési módot használjon. Lásd : Táblafüggvények.
Végrehajtási módok
A valós idejű mód csak a frissítési módot támogatja:
| Végrehajtási mód | Támogatott |
|---|---|
| Frissítési mód | ✓ |
| Append mode | Nem támogatott |
| Teljes mód | Nem támogatott |
Források és nyelők
A valós idejű mód a következő forrásokat és fogadókat támogatja:
| Forrás vagy fogadó | Forrásként | Fogadóként |
|---|---|---|
| Apache Kafka | ✓ | ✓ |
| Event Hubs (Kafka-összekötő használatával) | ✓ | ✓ |
| Kinesis | ✓ (EFO mód ajánlott) | Nem támogatott |
| AWS MSK | ✓ | Nem támogatott |
| Delta | Nem támogatott | Nem támogatott |
| Google Pub/Sub (üzenetkezelő rendszer) | Nem támogatott | Nem támogatott |
| Apache Pulsar | Nem támogatott | Nem támogatott |
Tetszőleges fogadók (használatával forEachWriter) |
Nem alkalmazható | ✓ |
Működtetők
A valós idejű mód a legtöbb strukturált streamszolgáltatót támogatja:
Állapot nélküli műveletek
| Operátor | Támogatott |
|---|---|
| Szelekció | ✓ |
| Vetület | ✓ |
mapPartitions |
Nem támogatott (lásd a korlátozást) |
| Union | ✓ (bizonyos korlátozásokkal) |
UDFs
| Operátor | Támogatott |
|---|---|
| Scala UDF | ✓ (bizonyos korlátozásokkal) |
| Python UDF | ✓ (bizonyos korlátozásokkal) |
Aggregation
| Függvény | Támogatott |
|---|---|
| sum | ✓ |
| számláló | ✓ |
| max | ✓ |
| min | ✓ |
| avg | ✓ |
| Aggregációs függvények | ✓ |
Windowing
| Operátor | Támogatott |
|---|---|
| Zuhanás | ✓ |
| Csúszó | ✓ |
| Session | Nem támogatott |
Deduplication
| Operátor | Támogatott |
|---|---|
| dropDuplicates | ✓ |
| DuplikátumokEltávolításaVízjelhatáronBelül | ✓ |
Streamelés táblázathoz illesztésbe
| Operátor | Támogatott |
|---|---|
| Belső illesztés | ✓ |
| Külső illesztés | ✓ |
| Szórástábla illesztése (a táblázat mérete 10 MB vagy kisebb) | ✓ |
| Táblaillesztés (közvetítés nélkül) | Nem támogatott |
Streamelés csatlakozás streameléshez
| Operátor | Támogatott |
|---|---|
| Belső illesztés | ✓ (Databricks Runtime 18 LTS és újabb, néhány konfigurációval) |
| Külső illesztés | Nem támogatott |
Megjegyzés:
Ha valós idejű módban szeretné streamelni az illesztéseket, további Spark-konfigurációkat kell beállítania. A konfigurációkról és a több stream futtatásának követelményeiről további információt a Stream to stream illesztések című témakörben talál.
Tetszőleges állapotalapú operátor
| Operátor | Támogatott |
|---|---|
| (lapos)MapGroupsWithState | Nem támogatott |
| transformWithState | ✓ (néhány különbséggel) |
Felhasználó által definiált fogadók
| Sink | Támogatott |
|---|---|
| forEach | ✓ |
| forEachBatch | Nem támogatott |
Különleges szempontok
Egyes operátorok és funkciók konkrét szempontokat vagy különbségeket tartalmaznak, ha valós idejű módban használják.
transformWithState valós idejű módban
Az egyéni állapotalapú alkalmazások létrehozásához a Databricks támogatja transformWithStateaz Apache Spark strukturált streamelési API-ját. További információért az API-ról és a kódrészletekről lásd: Build egy custom stateful application with with with (Build egy custom stateful application) transformWithState oldalra.
Az API azonban másként viselkedik valós idejű módban, mint a mikroköteges lekérdezésekben.
- A valós idejű mód az
handleInputRows(key: String, inputRows: Iterator[T], timerValues: TimerValues)metódust hívja meg minden egyes sorra.- Az
inputRowsiterátor egyetlen értéket ad vissza. A mikroköteg mód minden kulcshoz egyszer meghívja, és azinputRowsiterátor a mikro kötegben lévő kulcs összes értékét visszaadja. - A kód írásakor ezt a különbséget figyelembe kell venni
- Az
- Az eseményidőzítők nem támogatottak valós idejű módban.
-
transformWithStateInPandasvalós idejű módban nem támogatott. Használja inkább a soralapútransformWithStateAPI-t, amely objektumokat használRowa pandas DataFrame-ek helyett. - Valós idejű módban az időzítők az adatérkezéstől függően késleltetik a tüzelést:
- Ha egy időzítő 10:00:00-ra van ütemezve, de nem érkezik adat, az időzítő nem aktiválódik azonnal.
- Ha az adatok 10:00:10-kor érkeznek, az időzítő 10 másodperces késéssel aktiválódik.
- Ha nem érkezik adat, és a hosszan futó köteg leáll, az időzítő a köteg leállása előtt aktiválódik.
Megjegyzés:
A Databricks Runtime 18.1-es és újabb verzióiban, ha transformWithState és valós idejű módot használ alacsony átviteli sebességgel rendelkező Python, másodpercenként 5 rekordnál kevesebbet, akkor akár néhány száz ezredmásodpercnyi késés is előfordulhat. A Databricks azt javasolja, hogy a probléma megoldásához frissítsen a Databricks Runtime 18.2-re vagy újabb verzióra.
Python UDF-ek valós idejű módban
A Databricks támogatja a Python felhasználó által definiált függvények (UDF-ek) többségét valós idejű módban:
Állapot nélküli
| UDF-típus | Támogatott |
|---|---|
| Python skaláris UDF (Python skaláris felhasználó által definiált függvények (UDF-ek)) | ✓ |
| Nyíl skaláris UDF | ✓ |
| Pandas skaláris UDF (pandas felhasználó által definiált függvények) | ✓ |
Nyíl függvény (mapInArrow) |
✓ |
| Pandas függvény (Térkép) | ✓ |
Állapotalapú csoportosítás (UDAF)
| UDF-típus | Támogatott |
|---|---|
transformWithState (csak Row interfész) |
✓ |
transformWithStateInPandas |
Nem támogatott. Használja inkább a soralapú transformWithState API-t, amely objektumokat használ Row a pandas DataFrame-ek helyett. A részletekért lásd transformWithStateInPandas : nem támogatott . |
applyInPandasWithState |
Nem támogatott |
Állapot nélküli csoportosítás (UDAF)
| UDF-típus | Támogatott |
|---|---|
apply |
Nem támogatott |
applyInArrow |
Nem támogatott |
applyInPandas |
Nem támogatott |
Táblafüggvények
| UDF-típus | Támogatott |
|---|---|
| UDTF (Python felhasználó által definiált táblafüggvények (UDTF-ek)) | Nem támogatott |
| UC UDF | Nem támogatott |
A Python UDF-ek valós idejű módban való használatakor több szempontot is figyelembe kell venni:
- A késés minimalizálása érdekében állítsa a Nyíl köteg méretét (
spark.sql.execution.arrow.maxRecordsPerBatch) 1-re.- Kompromisszum: Ez a konfiguráció az átviteli sebesség rovására optimalizálja a késést. A legtöbb számítási feladat esetében ez a beállítás ajánlott.
- Csak akkor növelje meg a köteg méretét, ha nagyobb átviteli sebességre van szükség a bemeneti kötet kezeléséhez, és elfogadja a lehetséges késésnövekedést.
- A Pandas UDF-ek és függvények gyengén teljesítenek, ha az Arrow kötegmérete 1.
- Ha pandas UDF-eket vagy függvényeket használ, állítsa az Arrow csomagméretet magasabb értékre (például 100 vagy annál magasabbra).
- Ez nagyobb késést jelent. A Databricks egy nyíl UDF vagy függvény használatát javasolja, ha lehetséges.
-
transformWithStateInPandasvalós idejű módban nem támogatott. Használja inkább a soralapútransformWithStateAPI-t, amely objektumokat használRowa pandas DataFrame-ek helyett. AztransformWithStateInPandasnem támogatott és Real-time módú példák a soralapú API-t használó működő Python példához. - Az UDF-ekkel rendelkező késésre érzékeny számítási feladatok esetében a Databricks azt javasolja, hogy dedikált hozzáférési módot használjon. Standard hozzáférési módban a biztonsági elkülönítés többletterhelése lelassíthatja az UDF teljesítményét.