İşlenen dosyaları Otomatik Yükleyici ile temizleyin

Note

cloudFiles.cleanSource Databricks Runtime 16.4 ve üzeri sürümlerde mevcuttur.

İşlendikten sonra kaynak dizininden dosyaları taşımak veya silmek için kullanılır cloudFiles.cleanSource . İşlenen dosyaların kaldırılması, depolama maliyetlerini azaltır ve gelecekteki listeleme işlemlerinin süresini kısaltır.

Mode Description
OFF (varsayılan) Kaynak dizinindeki dosyalar taşınmaz veya silinmez.
MOVE Kaynak dizinindeki dosyalar, geçiş süresiyle belirlenen tutma süresinden (varsayılan 30 güncloudFiles.cleanSource.retentionDuration) sonra belirlenen cloudFiles.cleanSource.moveDestination yola taşınır.
DELETE Kaynak dizinindeki dosyalar, gecikmelerle tanımlanan cloudFiles.cleanSource.retentionDuration tutma süresinden (varsayılan 30 gün) sonra silinir.
Ek seçenek Varsayılan Geçerli değerler Description
cloudFiles.cleanSource.retentionDuration 30 days , veya gibi 14 days2 weeks dizesi1 month İşlenen dosyaların temizlik için aday olması için bekleme süresi. DELETE için 7 günden uzun olmalıdır. MOVE için en düşük kısıtlama yoktur.
cloudFiles.cleanSource.waitForCompletion false true, false Bu seçenek, Databricks Runtime 19 ve üzerindedir.
Temiz kaynak varsayılan olarak en iyi çaba gerektiren bir işlemdir. Akış, dosyaları temiz kaynak taşıma veya silme bitmeden önce dosyaları işlemeyi tamamlarsa, temiz kaynak işlemi sonlandırılır. Ayar, cloudFiles.cleanSource.waitForCompletion temiz kaynak dosyaları taşımak veya silmek bitene kadar akışı canlı kalmasını zorunlu kılıyor. Bu, silinecek çok sayıda dosya varsa yayın çalışma süresini artırabilir.
Bu sadece akış kendi kendine tamamlandığında geçerlidir (örneğin, bir availableNow tetikleyici tüm dosyaları boşaltıyor). Akışı manuel olarak durdurmak veya iptal etmek, bu seçenek ayarlanmış olsa bile temiz kaynak işlemini hemen sonlandırır.
cloudFiles.cleanSource.moveDestination Hiçbiri Bulut depolama alanı veya Unity Kataloğu birim yolu cloudFiles.cleanSource MOVE olarak ayarlandığında işlenen dosyaların arşivleneceği yol. Bu bir bulut depolama yolu veya Unity Kataloğu birim yolu (örneğin, /Volumes/my_catalog/my_schema/my_volume/archive/) olabilir.
Taşıma konumu:
  • Kaynak dizinin alt öğesi olamaz. Taşıma hedefini kaynak dizine yerleştirirseniz, arşivlenen dosyalar yeniden alınır.
  • Kaynakla aynı dış konumda, birimde veya DBFS bağlamasında bulun. Çapraz demetler ve kapsayıcılar arası taşımalar desteklenmez ve hataya neden olur.

Otomatik Yükleyici bu dizinde yazma izinlerine sahip olmalıdır.

Etkinleştirilmeden önce Hususlar cloudFiles.cleanSource

  • Azure Databricks, aynı kaynak dizininden birden fazla akış veri tükettiğinde bu seçeneğin kullanılmasını önermez. En hızlı akış dosyaları temizler, bu yüzden yavaş akışlar onları asla almıyor.
  • Bu özelliğin etkinleştirilmesi için Otomatik Yükleyici'nin denetim noktasında ek durum koruması gerekir ve bu da performans ek yüküne neden olur ancak tablo değerli işlev aracılığıyla cloud_files_state iyileştirilmiş gözlemlenebilirlik sağlar. Bakınız cloud_files_state tablo değerli fonksiyon.
  • Clean source, mevcut ayarla karar vermek için MOVE kullanılır ve DELETE belirli bir dosyayı seçer. Örneğin, ayarın MOVE dosyanın ilk işlendiği zaman olduğunu, ancak 30 gün sonra dosya temizleme adayı olduğunda olarak değiştirildiğini DELETE varsayalım. Bu durumda, temiz kaynak dosyayı siler.
  • Dosyaların süresi dolduğunda temizlenmeleri cloudFiles.cleanSource.retentionDuration garanti edilmemektedir. Maliyetleri düşük tutmak için Auto Loader, akış işleme ile eşzamanlı olarak dosyaları temizler ve akış işleme tamamlandığında veya sonlandırıldığında sonlandırır. Temizleme adaylığı olan ancak akış işleme sırasında temizlenemeyen dosyalar, bir sonraki Auto Loader çalıştığında alınır.

Temiz kaynak hakkında notlar

  • Clean Source sadece işlenmesi gereken bir dizi dosya varsa çalışır. Bu, tüketimden bağımsız olarak çalışan bir arka plan süreci değildir. Kaynak dizininde yeni dosya alınmıyorsa, mevcut akış çalıştırma için temiz kaynak başlamaz. Sonuç olarak, bir akış yeni dosya almayı durdurursa, saklama süresini geçmiş dosyalar ancak sonraki bir akış yeni bir toplu işlemi işlene kadar temizlenir.

    Bu parti gereksinimi her ne olursa cloudFiles.cleanSource.waitForCompletionolsun geçerlidir. Bu seçenek, yayını sadece bir koşu içinde devam eden bir temizliği tamamlamak için canlı tutuyor. İşleme yapılacak bir parti olmadığında temiz kaynak başlatmaz.

  • N. akış yayınında bir dosya alınırsa, commit_time dosya için dosya N+1 akış koşusunda ayarlanır. commit_time Clean Source dosyanın taşınabilir veya silmeye uygun olup olmadığını belirleyebilmeden önce ayarlanmalıdır, böylece bir dosya temizlik için aday olabilecek en erken N+2 akış koşusudur.

  • Ortam commit_time gerekli ama yeterli değil. Bir dosya, saklanma süresi dolduktan sonra temizlenir ve bu işlem ölçülür commit_time. Örneğin, varsayılan cloudFiles.cleanSource.retentionDuration 30 gün olduğunda, bugün işlenen bir dosya ayarlandıktan 30 gün commit_time sonra temizlenmeye uygun değildir. Bu, arada kaç dere akışı olursa olsun geçerlidir. Her iki koşul da dosya taşınmadan veya silinmeden önce yerine getirilmelidir.