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/fileName
listeler. 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
yerinehour=3
2021/5/3
olarakhour=03
karşı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:
- Azure Data Factory , dosyaları sözcük düzeninde karşıya yükleyecek şekilde yapılandırılabilir. Burada bir örne bakın.
- Kinesis Firehose
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.