Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Desteklenen diller
Gerçek zamanlı mod Scala, Java ve Python destekler.
İşlem türleri
Gerçek zamanlı mod aşağıdaki işlem türlerini destekler:
| İşlem türü | Destekleniyor |
|---|---|
| Tahsis Edilmiş (eski adı: tek kullanıcı) | ✓ |
| Standart (eski adı: paylaşılan) | ✓ (yalnızca Python) |
| Klasik üzerinde Lakeflow işlem hatları | Yapılandırılmış Akış olarak desteklenmez. İşlem hattı yapılandırması aracılığıyla desteklenir. Bkz. Lakeflow işlem hatlarında gerçek zamanlı modu kullanma. |
| Sunucusuz üzerinde Lakeflow işlem hatları | Yapılandırılmış Akış olarak desteklenmez. İşlem hattı yapılandırması aracılığıyla desteklenir. Bkz. Lakeflow işlem hatlarında gerçek zamanlı modu kullanma. |
| Serverless | Desteklenmiyor |
UDF'leri olan gecikmeye duyarlı iş yükleri için Databricks ayrılmış erişim modunu kullanmanızı önerir. Bkz. Tablo işlevleri.
Yürütme modları
Gerçek zamanlı mod yalnızca güncelleştirme modunu destekler:
| Yürütme modu | Destekleniyor |
|---|---|
| Güncelleştirme modu | ✓ |
| Append mode | Desteklenmiyor |
| Tamamlama modu | Desteklenmiyor |
Kaynaklar ve havuzlar
Gerçek zamanlı mod aşağıdaki kaynakları ve havuzları destekler:
| Kaynak veya havuz | Kaynak olarak | Havuz olarak |
|---|---|---|
| Apache Kafka | ✓ | ✓ |
| Event Hubs (Kafka bağlayıcısı kullanarak) | ✓ | ✓ |
| Kinesis | ✓ (yalnızca EFO modu) | Desteklenmiyor |
| AWS MSK | ✓ | Desteklenmiyor |
| Delta | Desteklenmiyor | Desteklenmiyor |
| Google Pub/Sub (Mesajlaşma Hizmeti) | Desteklenmiyor | Desteklenmiyor |
| Apache Pulsar | Desteklenmiyor | Desteklenmiyor |
Rastgele havuzlar (kullanarak forEachWriter) |
Uygulanamaz | ✓ |
Operatörler
Gerçek zamanlı mod çoğu Yapılandırılmış Akış işlecini destekler:
Durum bilgisi olmayan işlemler
| Operatör | Destekleniyor |
|---|---|
| Seleksiyon | ✓ |
| Yansıtma | ✓ |
mapPartitions |
Desteklenmiyor (sınırlamaya bakın) |
| Union | ✓ (bazı sınırlamalarla) |
UDFs
| Operatör | Destekleniyor |
|---|---|
| Scala UDF | ✓ (bazı sınırlamalarla) |
| Python Kullanıcı Tanımlı Fonksiyonu (UDF) | ✓ (bazı sınırlamalarla) |
Aggregation
| İşlev | Destekleniyor |
|---|---|
| sum | ✓ |
| sayı | ✓ |
| max | ✓ |
| min | ✓ |
| avg | ✓ |
| Toplama işlevleri | ✓ |
Windowing
| Operatör | Destekleniyor |
|---|---|
| Tumbling | ✓ |
| Sliding | ✓ |
| Oturum | Desteklenmiyor |
Deduplication
| Operatör | Destekleniyor |
|---|---|
| KopyalarıKaldır | ✓ |
| dropDuplicatesWithinWatermark | ✓ |
Tabloya katılma akışı
| Operatör | Destekleniyor |
|---|---|
| İç birleşim | ✓ |
| Dış Birleşim | ✓ |
| Tablo birleştirmeyi yayınlama (10 mb veya daha az tablo boyutu) | ✓ |
| Tablo birleştirme (yayın olmadan) | Desteklenmiyor |
Akışa katılma akışı
| Operatör | Destekleniyor |
|---|---|
| İç birleşim | ✓ (Databricks Runtime 18 ve üzeri, bazı yapılandırmalarla) |
| Dış birleşim | Desteklenmiyor |
Uyarı
Akışları gerçek zamanlı modda akışa almak için ek Spark yapılandırmaları ayarlamanız gerekir. Yapılandırmalar hakkında daha fazla bilgi edinmek ve birden çok akışı çalıştırma gereksinimleri için bkz . Akış birleştirmeleri için akış yapma.
Durum bilgisi olan rastgele işleç
| Operatör | Destekleniyor |
|---|---|
| (düz)MapGroupsWithState | Desteklenmiyor |
| transformWithState | ✓ (bazı farklılıklarla) |
Kullanıcı tanımlı havuzlar
| Sink | Destekleniyor |
|---|---|
| forEach | ✓ |
| forEachBatch | Desteklenmiyor |
Dikkat edilmesi gereken özel noktalar
Bazı işleçler ve özellikler gerçek zamanlı modda kullanıldığında dikkat edilmesi gereken belirli noktalara veya farklılıklara sahiptir.
transformWithState gerçek zamanlı modda
Databricks, durum bilgisi olan özel uygulamalar oluşturmak için Apache Spark Yapılandırılmış Akış'ta bir API'yi destekler transformWithState. API ve kod parçacıkları hakkında daha fazla bilgi için bkz. Durum bilgisi olan özel bir uygulama oluşturma .
Ancak API, gerçek zamanlı modda mikro toplu iş sorgularından farklı davranır.
- Gerçek zamanlı mod, her satır için
handleInputRows(key: String, inputRows: Iterator[T], timerValues: TimerValues)yöntemini çağırır.- Yineleyici
inputRowstek bir değer döndürür. Mikro toplu iş modu bunu her anahtar için bir kez çağırır veinputRowsyineleyici, mikro toplu işteki bir anahtarın tüm değerlerini döndürür. - Kodunuzu yazarken bu farkı hesaplayın
- Yineleyici
- Olay zamanı zamanlayıcıları gerçek zamanlı modda desteklenmez.
-
transformWithStateInPandasgerçek zamanlı modda desteklenmez. Bunun yerine pandas DataFrames yerine nesneleri kullanantransformWithStatesatır tabanlıRowAPI'yi kullanın. - Gerçek zamanlı modda, zamanlayıcıların çalışması veri gelişine bağlı olarak gecikir.
- Süreölçer 10:00:00 olarak zamanlandıysa ancak veri gelmiyorsa zamanlayıcı hemen tetiklenmiyor.
- Veriler 10:00:10'da ulaşırsa zamanlayıcı 10 saniyelik bir gecikmeyle tetikler.
- Veri gelmezse ve uzun süreli çalışan toplu işlem sonlandırılmak üzereyse, toplu işlem sonlandırılmadan önce zamanlayıcı tetiklenir.
Uyarı
Databricks Runtime 18.1 ve altında, düşük aktarım hızına sahip Python için saniyede 5 kayıttan daha az transformWithState ve gerçek zamanlı mod kullanıyorsanız, birkaç yüz milisaniyeye kadar artan gecikme süreleri görebilirsiniz. Databricks, sorunu çözmek için Databricks Runtime 18.2 ve üzeri sürümlere yükseltmenizi önerir.
Python UDF'leri gerçek zamanlı modda
Databricks, Python kullanıcı tanımlı işlevlerin (UDF) çoğunu gerçek zamanlı modda destekler:
Durumsuz
| UDF türü | Destekleniyor |
|---|---|
| Python skaler UDF (Python skaler kullanıcı tanımlı işlevler (UDF)) | ✓ |
| Arrow skaler UDF | ✓ |
| Pandas skaler UDF (pandas kullanıcı tanımlı işlevler) | ✓ |
Ok işlevi (mapInArrow) |
✓ |
| Pandas işlevi (Harita) | ✓ |
Duruma duyarlı gruplandırma (UDAF)
| UDF türü | Destekleniyor |
|---|---|
transformWithState (yalnızca Row arabirim) |
✓ |
transformWithStateInPandas |
Desteklenmiyor. Bunun yerine pandas DataFrames yerine nesneleri kullanan transformWithState satır tabanlı Row API'yi kullanın. Ayrıntılar için bkz transformWithStateInPandas . desteklenmiyor . |
applyInPandasWithState |
Desteklenmiyor |
Durum bilgisi olmayan gruplandırma (UDAF)
| UDF türü | Destekleniyor |
|---|---|
apply |
Desteklenmiyor |
applyInArrow |
Desteklenmiyor |
applyInPandas |
Desteklenmiyor |
Tablo işlevleri
| UDF türü | Destekleniyor |
|---|---|
| UDTF (Python kullanıcı tanımlı tablo işlevleri (UDF)) | Desteklenmiyor |
| UC UDF | Desteklenmiyor |
Python UDF'leri gerçek zamanlı modda kullanırken dikkate alınması gereken birkaç nokta vardır:
- Gecikme süresini en aza indirmek için Ok toplu iş boyutunu (
spark.sql.execution.arrow.maxRecordsPerBatch) 1 olarak ayarlayın.- Fedakarlık: Bu yapılandırma, geçiş hızından ödün vererek gecikme süresini iyileştirir. Çoğu iş yükü için bu ayar önerilir.
- Toplu iş boyutunu yalnızca giriş hacmine uyum sağlamak için daha yüksek bir aktarım hızı gerekiyorsa artırın ve gecikme süresindeki olası artışı kabul edin.
- Pandas UDF'leri ve işlevleri, Arrow toplu iş boyutu 1 olduğunda iyi performans göstermemektedir.
- Pandas UDF'leri veya işlevleri kullanıyorsanız, Arrow toplu iş boyutunu daha yüksek bir değere ayarlayın (örneğin, 100 veya daha fazla).
- Bu, daha yüksek gecikme süresi anlamına gelir. Databricks mümkünse ok UDF veya işlev kullanılmasını önerir.
-
transformWithStateInPandasgerçek zamanlı modda desteklenmez. Bunun yerine pandas DataFrames yerine nesneleri kullanantransformWithStatesatır tabanlıRowAPI'yi kullanın. Satır tabanlı API'yi kullanan çalışan bir Python örneği için bkz.transformWithStateInPandasdesteklenmiyor ve Real-time modu örnekleri. - UDF'leri olan gecikmeye duyarlı iş yükleri için Databricks ayrılmış erişim modunu kullanmanızı önerir. Standart erişim modunda güvenlik yalıtımı ek yükü UDF performansını yavaşlatabilir.