Yapılandırılmış Akış tetikleyici aralıklarını yapılandırma

Apache Spark Yapılandırılmış Akış verileri artımlı olarak işler. Tetikleyici aralıkları, Yapılandırılmış Akış'ın yeni verileri ne sıklıkta denetlediğini kontrol eder. Neredeyse gerçek zamanlı işleme, zamanlanmış veritabanı yenilemeleri için tetikleyici aralıkları yapılandırabilir veya bir gün veya hafta boyunca tüm yeni verileri toplu işleyebilirsiniz.

Otomatik Yükleyici nedir? veri yüklemek için Yapılandırılmış Akış'ı kullandığından, tetikleyicilerin nasıl çalıştığını anlamak, istenen sıklıkta veri alırken maliyetleri denetleme konusunda size en büyük esnekliği sağlar.

Önemli

Azure Databricks, kullanım örneğinin gecikme süresini ve maliyetini dengeleyen bir tetikleyici modu ayarlamanızı önerir. Aksi takdirde, bulut sağlayıcınızdan beklenmeyen depolama maliyetleri görebilirsiniz. Ayrıntılar için bkz. Bulut depolama maliyetini denetleme.

Tetikleyici modlara genel bakış

Aşağıdaki tabloda, Yapılandırılmış Akış'ta kullanılabilen tetikleyici modları özetlemektedir:

Tetikleyici Modu Sözdizimi Örneği (Python) En Uygun
Belirtilmemiş (Varsayılan) Geçerli Değil 3-5 saniyelik gecikme süresiyle genel amaçlı akış. 0 ms aralıklarla processingTime tetikleyicisine eşdeğerdir. Akış işleme, yeni veriler geldiği sürece sürekli olarak çalışır.
İşleme Süresi .trigger(processingTime='10 seconds') Maliyet ve performansı dengeleme. Sistemin verileri çok sık denetlemesini engelleyerek ek yükü azaltır.
Şimdi Kullanılabilir .trigger(availableNow=True) Zamanlanmış artımlı toplu işlem. Akış işinin tetiklenmesi sırasında mümkün olan en fazla veriyi işler.
Gerçek zamanlı mod .trigger(realTime='5 minutes') Sahtekarlık algılama veya gerçek zamanlı kişiselleştirme gibi saniyenin altında işlem gerektiren son derece düşük gecikme süresine neden olan operasyonel iş yükleri. Genel Önizleme. '5 dakika', mikro toplu işlemin uzunluğunu gösterir. Sorgu derlemesi gibi toplu iş başına ek yükü en aza indirmek için 5 dakika kullanın.
Devamlı .trigger(continuous='1 second') Desteklenmiyor. Bu, Spark OSS'de bulunan deneysel bir özelliktir. Bunun yerine gerçek zamanlı modu kullanın.

:::note Sunucusuz işlem

Sunucusuz işlemde yalnızca Trigger.AvailableNow() ve Trigger.Once() desteklenir. Databricks Trigger.AvailableNow() öneriyor.

Sunucusuz işlemde sürekli akış için, sürekli modda Tetiklenen ile sürekli işlem hattı modu karşılaştırmasını kullanın.

Bkz . Akış sınırlamaları.

:::

processingTime: Zamana bağlı tetikleyici aralıkları

Yapılandırılmış Akış, zaman tabanlı tetikleyici aralıklarını "sabit aralıklı mikro toplu işler" olarak ifade eder. anahtar sözcüğünü processingTime kullanarak dize olarak bir zaman süresi belirtin, örneğin .trigger(processingTime='10 seconds').

Bu aralığın yapılandırması, sistemin yeni verilerin ulaşılıp ulaşmadığını görmek için ne sıklıkta denetim gerçekleştirdiğini belirler. Gecikme süresi gereksinimlerini ve verilerin kaynağa ulaşma hızını dengelemek için işleme sürenizi yapılandırın.

AvailableNow: Artımlı toplu işlem

Önemli

Databricks Runtime 11.3 LTS ve üzeri sürümlerde, Trigger.Once kullanımdan kaldırılmıştır. Tüm artımlı toplu işleme iş yükleri için kullanın Trigger.AvailableNow .

AvailableNow tetikleyici seçeneği, maxBytesPerTrigger gibi seçeneklerle toplu iş boyutunu yapılandırma olanağıyla, kullanılabilir tüm kayıtları artımlı bir toplu iş olarak tüketir. Boyutlandırma seçenekleri veri kaynağına göre farklılık gösterir.

Desteklenen veri kaynakları

Azure Databricks, birçok Yapılandırılmış Akış kaynağından artımlı toplu işlem için Trigger.AvailableNow kullanılmasını destekler. Aşağıdaki tablo, her veri kaynağı için gereken desteklenen en düşük Databricks Runtime sürümünü içerir:

Kaynak En Düşük Databricks Runtime sürümü
Dosya kaynakları (JSON, Parquet vb.) 9.1 LTS
Delta Gölü 10,4 LTS
Otomatik Yükleyici 10,4 LTS
Apache Kafka 10,4 LTS
Kinezi 13.1

realTime: Ultra düşük gecikme süreli operasyonel iş yükleri

Yapılandırılmış Akış için gerçek zamanlı mod, kuyrukta 1 saniyenin altında ve yaygın durumlarda 300 ms civarında uçtan uca gecikme süresine ulaşır. Gerçek zamanlı modu etkili bir şekilde yapılandırma ve kullanma hakkında daha fazla bilgi için bkz. Yapılandırılmış Akış'ta gerçek zamanlı mod.

Apache Spark'ın Sürekli İşlem olarak bilinen ek bir tetikleyici aralığı vardır. Bu mod Spark 2.3'ten bu yana deneysel olarak sınıflandırılmıştır. Azure Databricks bu modu desteklemez veya önermez. Düşük gecikme süreli kullanım örnekleri için bunun yerine gerçek zamanlı modu kullanın.

Not

Bu sayfadaki sürekli işleme modu , Lakeflow Spark Bildirimli İşlem Hatlarında sürekli işleme ile ilişkili değildir.

Bulut depolama maliyetini denetleme

Varsayılan olarak, tetikleyici modunu ayarlamazsanız, Yapılandırılmış Akış tetikleyici modunu processingTime olarak ve aralığı 0olarak ayarlar ve bu da yeni verileri birkaç milisaniyede bir denetler. Bu, günde yüksek hacimli bulut depolama API'leri çağrısı oluşturabilir ve bulut sağlayıcınızdan beklenmeyen ücretlere neden olabilir.

Azure Databricks, gecikme süresi ve maliyet gereksinimlerinize uygun bir tetikleyici modu yapılandırmanızı önerir. Zamana bağlı tetikleyici aralığını yapılandırma hakkında bilgi için bkz processingTime .

Çalıştırmalar arasındaki tetikleyici aralıklarını değiştirme

Aynı denetim noktasını kullanırken çalıştırmalar arasındaki tetikleyici aralığını değiştirebilirsiniz.

Aralıkları değiştirirken davranış

Bir mikro parti işlemdeyken Yapılandırılmış Akış kapsamında bir sorgu durdurulursa, yeni tetikleyici aralığı geçerli olmadan önce bu mikro partinin tamamlanması gerekir. Tetikleyici aralığını değiştirdikten sonra, bir mikro toplu işlemin daha önce belirtilen yapılandırmayla işlendiğini gözlemleyebilirsiniz. Aşağıda, geçiş sonrasında beklenen davranış açıklanmaktadır:

  • Zaman tabanlı aralıktan AvailableNow: Mikro toplu iş, kullanılabilir tüm kayıtlar işlenmeden önce artımlı toplu iş olarak işlenebilir.
  • Zaman tabanlı aralıktan AvailableNow zamana: son AvailableNow iş tetiklendiğinde kullanılabilir olan tüm kayıtlar için işleme devam edebilir.

Sorgu hatalarından iyileşme

Artımlı toplu işlemle bir sorgu hatasından kurtarmaya çalışırsanız, tetikleyici aralığı değişikliği sorunu çözmez. Yapılandırılmış Akış, etkili mikro toplu işlemler gerektirdiğinden önceki başarısız toplu işlemin tamamlanması gerekir. Bkz. Apache Spark için hataya dayanıklılık semantiği.

Hatayı çözmek için hesaplama kapasitesini artırın, örneğin, çalışan düğümlerinin boyutunu büyütün. Nadir durumlarda, akışı yeni bir denetim noktasıyla yeniden başlatmanız gerekebilir.