Sunucusuz bilişimde akış

Bu sayfada sürekli işlem hatları, artımlı alım ve yönetilen bağlayıcılar dahil olmak üzere Azure Databricks sunucusuz akış iş yükleri için doğru yapılandırmanın nasıl seçileceği açıklanır. Doğru yapılandırmayı seçmek, akışın kaynak, şekil ve gecikme süresi gereksinimlerine bağlıdır.

Akış iş yükü olarak ne sayılır?

Akış iş yükü, bir kaynaktan (bulut nesne depolaması, ileti veri yolu veya değişiklik akışı gibi) ilişkisiz verileri okur ve bir havuza artımlı olarak yazar. Azure Databricks iki akış iş yükü desenini destekler:

  • Sürekli: Durmadan çalışan ve yeni verileri geldikçe işleyen bir işlem hattı. Gecikme süresi saniye cinsinden ölçülür.
  • Artımlı (tetiklenmiş olarak da adlandırılır): Bir zamanlamaya veya tetikleyiciye göre çalışan, son çalıştırmadan sonra gelen tüm verileri işleyen ve durduran işlem hattı. Gecikme süresi dakika cinsinden ölçülür.

Bazı iş yükleri akış işlem hatları gibi görünür ancak teknik olarak işlem hatları değildir. Örnekler arasında olayları dinlemek için açık bir websocket tutan bir hizmet, kullanıcı başına kalıcı bağlantı tutan bir sohbet uygulaması veya gelen HTTP isteklerini işleyen bir web kancası alıcısı sayılabilir. Bunlar akış işlem hatları değil uygulamalardır. Bu iş yükleri için doğru sunucusuz seçenek için bkz. İşlem hattı akışı olmayan iş yükleri.

Doğru akış yapılandırmasını seçin

Bu tablo, kullanım örneklerini kendilerine en uygun sunucusuz yapılandırmalarla eşler. Bu sayfadan sonra gelen bölümler, bu öneriler hakkında daha fazla ayrıntı sağlar.

Kullanım örneği Önerilen yapılandırma Neden?
Sürekli düşük gecikme süreli akış ETL'leri veya dönüşümler Sürekli modda Lakeflow işlem hatları Sürekli mod, her zaman açık akışlar için tasarlanmıştır. Akış kanalı oluşturma, mikrobatları eşzamanlı olarak çalıştırarak aktarım hızını ve gecikme süresini artırır. Yönetilen durum kurtarmayı otomatik tutar.
Bulut depolama alanından artımlı veri alımı Lakeflow işlem hatlarının içinde (düşük gecikme süresi için) veya ile sunucusuz bir işte (düşük gecikme süresi kabul edilebilirse) Trigger.AvailableNow() kullanın. Otomatik Yükleyici yeni dosyaları verimli bir şekilde izler. Trigger.AvailableNow() birikmiş işleri işler, ardından sonlanır; bu da zamanlanmış veya isteğe bağlı bir çalışma düzenine uygundur.
SaaS kaynaklarından veya veritabanı CDC’sinden yönetilen veri alımı Lakeflow Connect'te standart bağlayıcılar Sunucusuz veri alma iş hatlarına sahip tam yönetilen konektörler. Desteklenen kaynaklar için kod gerekmez.
Delta tabloları üzerinden SQL akışı Akış tabloları Yönetilen işlem hatları ve yenileme ile ekleme odaklı kaynaklar için SQL'e özel artımlı işleme.
Bir not defterinde veya görevde periyodik mikro toplu işleme Sunucusuz iş ile Trigger.AvailableNow() Dakika düzeyinde tazelik yeterli olduğunda uygun maliyetlidir. Sunucusuz işlem hızlı bir şekilde başlar ve toplu iş tamamlandığında sona erer.

Sürekli akış

Sunucusuz işlemde sürekli akış için Sürekli modda Lakeflow işlem hatlarını kullanın. İşlem hattı çalışmaya devam eder, kayıtları geldikçe işler ve hatalardan otomatik olarak kurtarır.

Sürekli akış yapılandırmak için:

Tavsiye

Stream pipelining sunucusuz Lakeflow işlem hatlarında varsayılan olarak etkindir. Mikro gruplar ardışık değil, eşzamanlı olarak çalıştırılır; bu da alma işlemlerinin yoğun olduğu akışlarda iş hacmini artırır.

Zaman tabanlı Structured Streaming tetikleyicileri, örneğin Trigger.ProcessingTime(interval) ve Trigger.Continuous(interval), sunucusuz not defterlerinde veya işlerde kullanılamaz. Her zaman açık desen için Lakeflow işlem hatlarını sürekli modda kullanın. Bkz . Akış sınırlamaları. Trigger.Once() desteklenir ancak kullanım dışıdır; var olan sorguları öğesine geçirin Trigger.AvailableNow().

Artımlı ve tetiklenen akış

Artımlı akış için, sunucusuz bir işte Trigger.AvailableNow() ile Structured Streaming'i çalıştırın. Her çalıştırma, son denetim noktasından bu yana ulaşan tüm verileri işler ve ardından sona erer.

Artımlı akışla sunucusuz bir iş yapılandırmak için:

Aşağıdaki örnek, Otomatik Yükleyici ile bulut depolamadan (source_path) yeni dosyaları okur, çalıştırma sırasında kullanılabilen tüm verileri işler ve bir Delta tablosuna yazar:

(spark.readStream
   .format("cloudFiles")
   .option("cloudFiles.format", "json")
   .option("cloudFiles.maxFilesPerTrigger", 1000)
   .load(source_path)
   .writeStream
   .trigger(availableNow=True)
   .option("checkpointLocation", checkpoint_path)
   .toTable("catalog.schema.target_table"))

Zamanlanmış Trigger.AvailableNow() iş, dakika düzeyinde gecikme kabul edilebilir olduğunda sunucusuz işlemde en uygun maliyetli akış düzenidir. İşlem saniyeler içinde başlar, toplu işlemi çalıştırır ve kapanır.

Yönetilen alım

Kaynak bir SaaS uygulaması veya işletimsel veritabanıysa, Yapılandırılmış Akış kodu yazmak yerine Lakeflow Connect'i kullanın. Lakeflow Connect Salesforce, Workday, SQL Server CDC ve PostgreSQL CDC gibi bağlayıcılar için sunucusuz alma işlem hatları çalıştırır. Bkz. Lakeflow Connect'te yönetilen bağlayıcılar.

Bu yol şu durumlarda doğru yanıttır:

  • Kaynağınız için bir bağlayıcı var.
  • Özel kod yerine yönetilen işlem hattı istiyorsunuz.
  • Kutudan çıktığı gibi şema evrimi, veri soyağacı ve izleme özelliklerine sahip olmanız gerekir.

SQL tarafından yönetilen artımlı veri işleme

SQL öncelikli ekipler için, SQL'e özgü akış işleme iş yüklerinde akış tablolarını kullanın. Akış tablolarını Lakeflow işlem hatlarının içinde veya tek başına akış tabloları olarak tanımlayabilirsiniz.

CREATE OR REFRESH STREAMING TABLE SQL deyimi kullanılarak oluşturulan bağımsız akış tabloları için ilk veri yenileme ve doldurma işlemi hemen başlar. Ayrılmış sunucusuz işlem hattı, her akış tablosu için sistem tarafından otomatik olarak oluşturulur ve yönetilir.

Yönetilen yenilemeli toplu semantik sorgu sonuçlarına ihtiyacınız varsa bunun yerine somutlaştırılmış görünümleri kullanın. Bkz Gerçekleştirilmiş görünümler.

Akış ardışık düzeni olmayan iş yükleri

Uzun süreli bir bağlantıyı tutması, bağlantı noktasında dinlemesi veya gelen HTTP isteklerine yanıt vermesi gereken bir iş yükü bir akış işlem hattı değildir; bir uygulamadır. Bu iş yüklerini sunucusuz bir işte çalıştırmayın. Doğru Databricks seçenekleri şunlardır:

  • Kalıcı bağlantı veya HTTP uç noktası gerektiren uzun süre çalışan hizmetler: Databricks Uygulamaları ile hizmeti derleyin. Databricks Apps, FastAPI, Flask, Streamlit, Dash, Gradio, Node.jsve Shiny uygulamaları gibi özel uygulamaları Azure Databricks barındırmaya yönelik sunucusuz platformdur. Bkz. Databricks Uygulamaları.
  • Gelen web kancaları veya olay dinleyicileri: Databricks Apps üzerinde bir HTTP uç noktasını açığa çıkarma ya da web kancasını harici bir hizmette sonlandırıp olayları bulut depolamaya veya bir mesaj veri yoluna yazma, ardından bunları sunucusuz bir akış işlem hattıyla alma.
  • Özel belirteç veya kimlik bilgisi değişimi: OAuth ile hizmet sorumlularını kullanın veya bir uygulamadan Databricks REST API'lerini çağırın. Akış hatları kullanıcıya özel oturumları veya özel belirteç durumunu tutmaz.

İş yükünüzün bir akış işlem hattına uygun olup olmadığını değerlendiriyorsanız şunu sorun:

  • İş yükü ilişkisiz bir veri kaynağından okur ve havuza yazar mı? Eğer öyleyse, bu bir akış hattıdır.
  • İş yükünün istemciye açık bir bağlantı tutması gerekiyor mu? Evet ise, bir uygulamadır; Databricks Uygulamalarını kullanın.

Sınırlamalar

Sunucusuz işlem aşağıdaki akış kısıtlamalarını uygular. Bunların hiçbiri doğru ürünle eşleştirildiğinde yukarıdaki iş yüklerini engellemez.

  • Zaman Tabanlı Yapılandırılmış Akış tetikleyicileri (Trigger.ProcessingTime(interval) ve Trigger.Continuous(interval)) sunucusuz not defterlerinde veya işlerde desteklenmez. Sürekli açık akışlar için Lakeflow işlem hatlarını sürekli modda veya tetiklemeli çalıştırmalar için Trigger.AvailableNow() kullanın. Bkz . Akış sınırlamaları.
  • Açıkça belirtilmiş bir tetikleyici olmadan akış sorguları INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED ile başarısız olur. Apache Spark varsayılan olarak Trigger.ProcessingTime("0 seconds") kullanır; bu, sunucusuz işlemde desteklenmez. Her akış sorgusunda daima Trigger.AvailableNow() ayarlayın veya sürekli modda Lakeflow ardışık düzenlerini kullanın.
  • Standart erişim modunda akış için tüm sınırlamalar sunucusuz işlem için de geçerlidir. Bkz . Akış sınırlamaları.

Sonraki Adımlar