Aracılığıyla paylaş


Otomatik Yükleyici dizin listeleme modu nedir?

Otomatik Yükleyici varsayılan olarak dizin listeleme modunu kullanır. Dizin listeleme modunda, Otomatik Yükleyici giriş dizinini listeleyerek yeni dosyaları tanımlar. Dizin listeleme modu, bulut depolamadaki verilerinize erişmek dışında herhangi bir izin yapılandırması olmadan Otomatik Yükleyici akışlarını hızlı bir şekilde başlatmanızı sağlar.

Dizin listeleme modunda en iyi performans için Databricks Runtime 9.1 veya üzerini kullanın. Bu makalede, dizin listeleme modunun varsayılan işlevselliği ve dosyaların sözcük düzenine göre iyileştirmeler açıklanmaktadır.

Dizin listeleme modu nasıl çalışır?

Azure Databricks, bulut depolamadaki dosyaları diğer Apache Spark seçeneklerine göre daha verimli bir şekilde bulmak için Otomatik Yükleyici için en iyi duruma getirilmiş dizin listeleme moduna sahiptir.

Örneğin, bu dizinlerdeki tüm dosyaları bulmak için her 5 dakikada bir olarak karşıya yüklenen dosyalarınız varsa, Apache Spark dosya kaynağı tüm alt dizinleri paralel olarak /some/path/YYYY/MM/DD/HH/fileNamelisteler. Aşağıdaki algoritma, nesne depolamaya yapılan API dizin çağrılarının LIST toplam sayısını tahmin eder:

1 (temel dizin) + 365 (günlük) * 24 (saat başına) = 8761 çağrı

Otomatik Yükleyici, depolama alanından düzleştirilmiş bir yanıt alarak API çağrılarının sayısını, her API çağrısı tarafından döndürülen sonuç sayısına bölünen depolamadaki dosya sayısına azaltır ve bulut maliyetlerinizi büyük ölçüde azaltır. Aşağıdaki tabloda, ortak nesne depolama için her API çağrısı tarafından döndürülen dosya sayısı gösterilmektedir:

Arama başına döndürülen sonuçlar Nesne depolama
1000 S3
Kategori 5000 ADLS 2. Nesil
1024 GCS

Artımlı Listeleme (kullanım dışı)

Önemli

Bu özellik kullanım dışı bırakıldı. Databricks artımlı listeleme yerine dosya bildirim modunun kullanılmasını önerir.

Dekont

Databricks Runtime 9.1 LTS ve üzerinde kullanılabilir.

Artımlı listeleme Azure Data Lake Storage 2. Nesil (abfss://), S3 () ve GCS (s3://gs://) için kullanılabilir.

Sözcük temelli olarak oluşturulan dosyalar için, Otomatik Yükleyici tüm dizinin içeriğini listelemek yerine son alınan dosyalardan listeleyerek dizin listeleme verimliliğini artırmak için sözcük temelli dosya sıralama ve iyileştirilmiş listeleme API'lerinden yararlanmaktadır.

Varsayılan olarak, Otomatik Yükleyici önceden tamamlanmış dizin listelerinin dosya yollarını denetleyerek ve karşılaştırarak belirli bir dizinin artımlı listeleme için geçerli olup olmadığını otomatik olarak algılar. Modda verilerin auto nihai olarak tamamlanmasını sağlamak için, Otomatik Yükleyici ardışık 7 artımlı listeyi tamamladıktan sonra otomatik olarak tam dizin listesini tetikler. Belirli bir aralıkta zaman uyumsuz geri doldurmaları tetikle ayarını yaparak cloudFiles.backfillInterval tam dizin listelerinin sıklığını denetleyebilirsiniz.

Dosyaların sözcük düzeni

Dosyaların sözcük temelli olarak sıralanması için, karşıya yüklenen yeni dosyaların var olan dosyalardan sözcük temelli olarak daha büyük bir ön eke sahip olması gerekir. Sözcük temelli sıralı dizinlerin bazı örnekleri aşağıda gösterilmiştir.

Sürüme alınan dosyalar

Delta Lake, tablo işlem günlüklerine sözcük düzeninde işlemeler yapar.

<path-to-table>/_delta_log/00000000000000000000.json
<path-to-table>/_delta_log/00000000000000000001.json <- guaranteed to be written after version 0
<path-to-table>/_delta_log/00000000000000000002.json <- guaranteed to be written after version 1
...

AWS DMS , CDC dosyalarını AWS S3'e sürümlenmiş bir şekilde yükler.

database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...

Bölümlenmiş dosyaların tarihi

Dosyalar bölümlenmiş tarih biçiminde karşıya yüklenebilir. Bunun bazı örnekleri şunlardır:

// <base-path>/yyyy/MM/dd/HH:mm:ss-randomString
<base-path>/2021/12/01/10:11:23-b1662ecd-e05e-4bb7-a125-ad81f6e859b4.json
<base-path>/2021/12/01/10:11:23-b9794cf3-3f60-4b8d-ae11-8ea320fad9d1.json
...

// <base-path>/year=yyyy/month=MM/day=dd/hour=HH/minute=mm/randomString
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/442463e5-f6fe-458a-8f69-a06aa970fc69.csv
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/8f00988b-46be-4112-808d-6a35aead0d44.csv <- this may be uploaded before the file above as long as processing happens less frequently than a minute

Dosyalar tarih bölümleme ile karşıya yüklendiğinde, aklınızda bulundurmak gereken bazı şeyler şunlardır:

  • Aylar, günler, saatler, dakikalar sözcük düzeninden emin olmak için sıfırlarla doldurulmalıdır (yerine veya 2021/05/03 yerine hour=32021/5/3olarak hour=03karşıya yüklenmelidir).
  • İşlem üst dizinin zaman ayrıntı düzeyine göre daha az sıklıkta gerçekleştiği sürece dosyaların en derin dizinde sözcük temelli olarak yüklenmesi gerekmez.

Dosyaları bölümlenmiş sözcük düzeninde karşıya yükleyebilen bazı hizmetler şunlardır:

Otomatik Yükleyici için kaynak yolu değiştirme

Databricks Runtime 11.3 LTS ve üzeri sürümlerde, yeni bir denetim noktası dizini seçmek zorunda kalmadan dizin listeleme moduyla yapılandırılan Otomatik Yükleyici için dizin giriş yolunu değiştirebilirsiniz.

Uyarı

Bu işlev dosya bildirim modu için desteklenmez. Dosya bildirim modu kullanılırsa ve yol değiştirilirse, dizin güncelleştirmesi sırasında yeni dizinde zaten var olan dosyaları alamayabilirsiniz.

Örneğin, gibi /YYYYMMDD/güne göre düzenlenmiş bir dizin yapısındaki tüm verileri yükleyen günlük bir alım işi çalıştırmak istiyorsanız, daha önce kullanılan tüm kaynak dizinlerden alınan dosyaların durum bilgilerini korurken, her gün farklı bir kaynak dizinde alım durumu bilgilerini izlemek için aynı denetim noktasını kullanabilirsiniz.