Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir sorgu, büyük bir Delta Lake tablosunu daha küçük, filtrelenmiş bir tabloyla birleştirdiğinde, filtre değerleri sorgu çalıştırılana kadar bilinmez. Çalışma zamanı budama olmadan, sorgu büyük tablodaki tüm dosyaları, hatta hiç eşleşen satır içermeyen dosyaları bile tarar. Dinamik dosya budama bu sorunu çözer. Çalışma zamanında, optimizer filtre sonuçlarını birleşimin bir tarafından Delta Lake tablosunun taramasına iter ve eşleşen satırlar içeremeyecek dosyaları atlar.
Dinamik dosya budama varsayılan olarak etkinleştirilmiştir. Bundan faydalanmak için sorgularınızı değiştirmenize gerek yok.
Dinamik dosya budama uygulandığında
Dinamik dosya budama yalnızca Delta Lake tablolarındaki birleşmeler için geçerlidir. Bir MERGE ifadede, birleştirme koşulu eşitlik için kaynak sütununu hedef sütunuyla karşılaştırdığında, o, hedef dosyaları atlamak için kaynaktaki birleştirme anahtarı değerlerini kullanır.
UPDATE ve DELETE ifadelerinde, koşul aynı tür karşılaştırma yapan bir alt sorgu içerdiğinde geçerlidir.
MERGE, UPDATE ve DELETE ifadelerinde dinamik dosya budama, Photon özellikli işlem kümesi gerektirir.
SELECT ifadeleri için Photon daha geniş ve daha güvenilir dinamik dosya budama özelliğine sahiptir. Photon olmadan, dinamik dosya budama, sorgu şekline ve yürütme planına bağlı olarak SELECT deyimlerine yine de uygulanabilir. Bkz . Photon nedir?.
Dinamik dosya budama, en çok bölümlenmemiş tablolar ve bölümlenmemiş sütunlardaki join'ler için performansı artırır. Varsayılan olarak, yalnızca birleşimdeki büyük Delta Lake tablosu en az 10 GB boyutundaysa ve en az 10 dosya içeriyorsa tetiklenir. Bkz. Yapılandırma.
Dinamik dosya budama ayrıca yazma çakışmalarını azaltır. Delta Lake, bir commit sırasında çatışmaları kontrol ettiğinde, dinamik dosya budamanın atladığı dosyaları dikkate alır. Bu, başarısız işlemlerin sayısını azaltır. Bkz Yalıtım seviyeleri ve yazma çakışmaları.
Önerilen yöntemler
Dinamik dosya budamanın performans üzerindeki etkisi, verilerin nasıl kümelendiğiyle ilişkilidir. Birleştirme yaptığınız değerler her dosyaya yayılmışsa, dinamik dosya budama çok az dosyayı atlar. Dinamik dosya budamanın daha fazla dosyayı atlamasına yardımcı olmak için şu uygulamaları takip edin:
- Sık birleştirme yaptığınız sütunlarda liquid clustering kullanın, böylece eşleşen satırlar daha az sayıda dosyada birlikte yer alır.
- Dinamik dosya budama için
MERGE,UPDATEveDELETEifadelerinde gerekli olan Photon destekli hesaplamayı kullanın.
Konfigürasyon
Çoğu iş yükü bu ayarları değiştirmek zorunda değil. Eğer daha küçük bir Delta Lake tablosuna karşı birleştirme budamadan yararlanacak ama varsayılan boyut veya dosya sayısı eşiğinin altına düşüyorsa, eşikleri ayarlamayı düşünün.
Bu Apache Spark yapılandırma özellikleri dinamik dosya budama işlemlerini kontrol ediyor:
| Property | Type | Default | Description |
|---|---|---|---|
spark.databricks.optimizer.dynamicFilePruning |
Boolean |
true |
Dinamik dosya budamayı açar veya kapatır. |
spark.databricks.optimizer.deltaTableSizeThreshold |
Long |
10000000000 (10 GB) |
Dinamik dosya budamayı tetikleyen birleşimdeki büyük Delta Lake tablosunun bayt cinsinden minimum boyutu. Daha küçük bir tabloda, tüm tabloyu taramak genellikle filtreleri aşağı itmekten daha ucuzdur. Delta Lake tablosunun boyutunu bulmak için DESCRIBE DETAIL table_name çalıştırın ve sizeInBytes sütununu kontrol edin. |
spark.databricks.optimizer.deltaTableFilesThreshold |
Integer |
10 |
Dinamik dosya budamayı tetikleyen birleşimdeki büyük Delta Lake tablosundaki minimum dosya sayısı. Tabloda bu eşik seviyesinden daha az dosya varsa, dinamik dosya budama çalışmaz, çünkü sadece birkaç dosya olan bir tablo için buna değmeyebilir. Delta Lake tablosunda dosya sayısını bulmak için DESCRIBE DETAIL table_name komutunu çalıştırın ve numFiles sütununu kontrol edin. |