Delta tablolarında Düşük Karıştırma Birleştirme iyileştirmesi
Delta Lake MERGE komutu , kullanıcıların delta tablosunu gelişmiş koşullarla güncelleştirmesine olanak tanır. MERGE komutunu kullanarak bir kaynak tablo, görünüm veya DataFrame'den gelen verileri hedef tabloya güncelleştirebilir. Ancak geçerli algoritma, değiştirilmemiş satırları işlemek için tam olarak iyileştirilmemiş . Düşük Karıştırma birleştirme iyileştirmesiyle, değiştirilmemiş satırlar, eşleşen satırları güncelleştirmek için gereken pahalı bir karıştırma işleminin dışında tutulur.
Neden Düşük Karışık Birleştirmeye ihtiyacımız var?
Şu anda MERGE işlemi iki Birleştirme yürütmesi tarafından gerçekleştirilir. İlk birleşim, eşleşen satırlar da dahil olmak üzere hedef tablonun dokunulan dosyaların listesini bulmak için hedef tablonun tamamını ve kaynak verileri kullanmaktır. Bundan sonra, gerçek tablo güncelleştirmesini yapmak için yalnızca dokunulan dosyaları ve kaynak verileri okuyarak ikinci birleştirmeyi gerçekleştirir. İlk birleşim, ikinci birleştirme için veri miktarını azaltmak olsa da, dokunulan dosyalarda çok sayıda değiştirilmemiş satır olabilir. İlk birleştirme sorgusu, yalnızca belirtilen eşleşen koşuldaki sütunları okuduğundan daha hafiftir. Tablo güncelleştirmesinin ikincisinde tüm sütunların yüklenmesi gerekir ve bu da pahalı bir karıştırma işlemine neden olur.
Düşük Karıştırma birleştirme iyileştirmesi ile Delta, ilk birleşimden gelen eşleşen satır sonucunu geçici olarak tutar ve ikinci birleşim için kullanır. Sonuç temelinde, ağır karıştırma işleminden değiştirilmemiş satırları dışlar. Eşleşen satırlar ve değiştirilmemiş satırlar için iki ayrı yazma işi olması, önceki davranışa kıyasla 2 kat sayıda çıkış dosyası elde edilmesine neden olabilir. Ancak beklenen performans artışı olası küçük dosyalar sorununa ağır basıyor.
Kullanılabilirlik
Dekont
- Düşük Karışık Birleştirme, Önizleme özelliği olarak kullanılabilir.
Apache Spark sürüm 3.2 ve 3.3 için Synapse Havuzlarında kullanılabilir.
Sürüm | Kullanılabilirlik | Varsayılan |
---|---|---|
Delta 0.6 / Spark 2.4 | Hayır | - |
Delta 1.2 / Spark 3.2 | Evet | false |
Delta 2.2 / Spark 3.3 | Evet | true |
Düşük Karışık Birleştirmenin Avantajları
- Dokunulan dosyalardaki değiştirilmemiş satırlar ayrı işlenir ve gerçek MERGE işleminden geçilmez. Genel MERGE yürütme süresini ve işlem kaynaklarını kaydedebilir. Çok sayıda satır kopyalandığında ve yalnızca birkaç satır güncelleştirildiğinde kazanç daha büyük olur.
- Satır sıralamaları değiştirilmemiş satırlar için korunur. Bu nedenle, dosya sıralanmış veya Z-ORDERED ise, değiştirilmemiş satırların çıkış dosyaları yine de veri atlama için verimli olabilir.
- BIRLEŞTIRME koşulu dokunulan dosyalardaki tüm satırlarla eşleştiğinde en kötü durumda bile küçük bir ek yük olacaktır.
Düşük Karışık Birleştirmeyi etkinleştirme ve devre dışı bırakma
Havuz veya oturum için yapılandırma ayarlandıktan sonra, tüm Spark yazma desenleri işlevselliği kullanır.
Düşük Karışık Birleştirme iyileştirmesini kullanmak için aşağıdaki yapılandırmayı kullanarak etkinleştirin:
- Scala ve PySpark
spark.conf.set("spark.microsoft.delta.merge.lowShuffle.enabled", "true")
- Spark SQL
SET `spark.microsoft.delta.merge.lowShuffle.enabled` = true
Geçerli yapılandırma değerini denetlemek için aşağıda gösterildiği gibi komutunu kullanın:
- Scala ve PySpark
spark.conf.get("spark.microsoft.delta.merge.lowShuffle.enabled")
- Spark SQL
SET `spark.microsoft.delta.merge.lowShuffle.enabled`
Özelliği devre dışı bırakmak için aşağıdaki yapılandırmayı aşağıda gösterildiği gibi değiştirin:
- Scala ve PySpark
spark.conf.set("spark.microsoft.delta.merge.lowShuffle.enabled", "false")
- Spark SQL
SET `spark.microsoft.delta.merge.lowShuffle.enabled` = false
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin