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.
Bu sayfada desteklenen ortamlar, diller, kaynaklar, havuzlar ve işleçler de dahil olmak üzere Yapılandırılmış Akış'ta gerçek zamanlı mod için başvuru bilgileri sağlanır. Bilinen sınırlamalar için bkz. Gerçek zamanlı mod sınırlamaları.
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) |
| Lakeflow Spark Deklaratif Boru Hatları Klasik | Desteklenmiyor |
| Lakeflow Spark Deklaratif İşlem Hatları Sunucusuz | Desteklenmiyor |
| 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 | ✓ |
UDFs
| Operatör | Destekleniyor |
|---|---|
| Scala UDF | ✓ (bazı sınırlamalarla) |
| Python Kullanıcı Tanımlı Fonksiyonu (UDF) | ✓ (bazı sınırlamalarla) |
Aggregation
| Operatör | Destekleniyor |
|---|---|
| sum | ✓ |
| sayı | ✓ |
| max | ✓ |
| min | ✓ |
| avg | ✓ |
| Toplama işlevleri | ✓ |
Windowing
| Operatör | Destekleniyor |
|---|---|
| Tumbling | ✓ |
| Sliding | ✓ |
| Oturum | Desteklenmiyor |
Deduplication
| Operatör | Destekleniyor |
|---|---|
| KopyalarıKaldır | ✓ (durum sınırsız) |
| dropDuplicatesWithinWatermark | Desteklenmiyor |
Tabloya katılma akışı
| Operatör | Destekleniyor |
|---|---|
| Tablo birleştirmeyi yayınlama (tablo küçük olmalıdır) | ✓ |
| Akışa katılma akışı | Desteklenmiyor |
| (düz)MapGroupsWithState | Desteklenmiyor |
| transformWithState | ✓ (bazı farklılıklarla) |
| birleşim | ✓ (bazı sınırlamalarla) |
| forEach | ✓ |
| forEachBatch | Desteklenmiyor |
| mapPartitions | Desteklenmiyor (sınırlamaya bakın) |
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'nin gerçek zamanlı modda davranışı ile mikro toplu iş mimarisinden yararlanan geleneksel akış sorguları arasında bazı farklılıklar vardı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 (Kullanıcı tanımlı skaler işlevler - Python) | ✓ |
| 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 yapılandırı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.