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.
Bu makalede Delta Lake kullanırken en iyi yöntemler açıklanmaktadır.
En iyi yöntemlere genel bakış
Delta Lake iş yüklerinin çoğu için geçerli olan genel öneriler aşağıdadır:
- Unity Kataloğu yönetilen tablolarını kullanın. Bkz. Delta Lake ve Apache Iceberg için Unity Catalog tarafından yönetilen tablolar.
- Tahmine dayalı iyileştirmeyi kullanın. Bkz. Unity Kataloğu tarafından yönetilen tablolar için tahmine dayalı iyileştirme.
- Sıvı kümeleme kullanın. Bkz Tablolar için sıvı kümeleme kullanma.
- Aynı konumdaki bir tabloyu silip yeniden oluştururken her zaman bir
CREATE OR REPLACE TABLEdeyimi kullanmanız gerekir. Ayrıntılara bakın Tabloyu bırakma veya değiştirme.
Eski Delta yapılandırmalarını kaldırma
Databricks, yeni bir Databricks Runtime sürümüne yükseltirken Spark yapılandırmalarından ve tablo özelliklerinden en açık eski Delta yapılandırmalarının kaldırılmasını önerir. Eski yapılandırmalar, Databricks tarafından sunulan yeni iyileştirmelerin ve varsayılan değerlerin geçirilen iş yüklerine uygulanmasını engelleyebilir.
Dosyaları sıkıştırma
Unity Kataloğu tarafından yönetilen tablolar üzerinde tahmine dayalı optimizasyon, OPTIMIZE ve VACUUM komutlarını otomatik olarak çalıştırır. Bkz. Unity Kataloğu tarafından yönetilen tablolar için tahmine dayalı iyileştirme.
Databricks, küçük dosyaları sıkıştırmak için OPTIMIZE komutunun sık çalıştırılmasını önerir.
Not
Bu işlem eski dosyaları kaldırmaz. Bunları kaldırmak için VACUUM komutunu çalıştırın.
Delta Lake ile Spark önbelleğe alma özelliğini kullanmayın
Databricks, aşağıdaki nedenlerle Spark önbelleğini kullanmanızı önermez:
- Önbelleğe alınmış
DataFrameüzerine eklenen ilave filtrelerden kaynaklanabilecek herhangi bir veri atlamasını kaybedersiniz. - Tabloya farklı bir tanımlayıcı kullanılarak erişilirse önbelleğe alınan veriler güncelleştirilmeyebilir.
Apache Spark'ta Delta Lake ile Parquet arasındaki farklar
Delta Lake aşağıdaki işlemleri otomatik olarak işler. Bu işlemleri asla el ile gerçekleştirmemelisiniz:
-
REFRESH TABLE: Delta Lake tabloları her zaman en güncel bilgileri döndürür, bu nedenle değişikliklerden sonraREFRESH TABLEöğesini manuel olarak çağırmanıza gerek yoktur. -
Bölüm ekleme ve kaldırma: Delta Lake, bir tabloda bulunan bölüm kümesini otomatik olarak izler ve veriler eklendikçe veya kaldırıldıkçe listeyi güncelleştirir. Sonuç olarak
ALTER TABLE [ADD|DROP] PARTITIONveyaMSCKkomutunu çalıştırmanız gerekmez. -
Tek bir bölüm yükleme: Bölümleri doğrudan okumak gerekli değildir. Örneğin, komutunu çalıştırmanız
spark.read.format("parquet").load("/data/date=2017-01-01")gerekmez. Bunun yerine, verileri atlamak içinWHEREgibispark.read.table("<table-name>").where("date = '2017-01-01'")bir yan tümce kullanın. - Veri dosyalarını el ile değiştirmeyin: Delta Lake, değişiklikleri tabloda atomik olarak işlemek için işlem günlüğünü kullanır. Delta Lake tablosundaki Parquet veri dosyalarını doğrudan değiştirmeyin, eklemeyin veya silmeyin, çünkü bu veri kaybına veya tablo bozulmasına neden olabilir.
Delta Lake birleştirme işleminin performansını iyileştirme
Aşağıdaki yaklaşımları kullanarak birleştirme süresini kısaltabilirsiniz:
Eşleşmeler için arama alanını azaltın: İşlem varsayılan olarak delta
mergeLake tablosunun tamamında arama yaparak kaynak tabloda eşleşmeleri bulur. Hızlandırmanınmergebir yolu, eşleştirme koşuluna bilinen kısıtlamalar ekleyerek arama alanını azaltmaktır. Örneğin, tarafından bölümlenmişcountrybir tablonuz olduğunu vedateson güne ve belirli bir ülkeye ilişkin bilgileri güncelleştirmek için kullanmakmergeistediğinizi varsayalım. Aşağıdaki koşulun eklenmesi, sorgunun yalnızca ilgili bölümlerde eşleşmeleri araydıkça daha hızlı olmasını sağlar:events.date = current_date() AND events.country = 'USA'Ayrıca, bu sorgu diğer eşzamanlı işlemlerle çakışma olasılığını da azaltır. Daha fazla ayrıntı için bkz: Yalıtım düzeyleri ve yazma çakışmaları.
Sıkıştırılmış dosyalar: Veriler birçok küçük dosyada depolanıyorsa, eşleşmeleri aramak için verileri okumak yavaş olabilir. Okuma aktarım hızını geliştirmek için küçük dosyaları daha büyük dosyalara sıkıştırabilirsiniz. Ayrıntılar için bkz . Veri dosyası düzenini iyileştirme.
Yazma işlemleri için karıştırma bölümlerini denetleme: İşlem
merge, güncelleştirilmiş verileri hesaplamak ve yazmak için verileri birden çok kez karıştırıyor. Karıştırmak için kullanılan görev sayısı Spark oturum yapılandırmasıspark.sql.shuffle.partitionstarafından denetlenır. Bu parametrenin ayarlanması yalnızca paralelliği denetlemez, aynı zamanda çıkış dosyalarının sayısını da belirler. Değerin artırılması paralelliği artırır ancak aynı zamanda daha fazla sayıda daha küçük veri dosyası oluşturur.İyileştirilmiş yazma işlemlerini etkinleştirme: Bölümlenmiş tablolar için,
mergekarıştırma bölümlerinin sayısından çok daha fazla sayıda küçük dosya oluşturabilir. Her shuffle görevinin birden çok bölüme birden çok dosya yazabilmesi ve performans darboğazına dönüşebilmesi nedeniyle. İyileştirilmiş yazmaları etkinleştirerek dosya sayısını azaltabilirsiniz. Bkz İyileştirilmiş yazma işlemleri.Tablodaki dosya boyutlarını ayarlama: Azure Databricks, daha küçük tablolar için daha küçük dosyalar ve daha büyük tablolar için daha büyük dosyalar kullanarak dosya boyutlarını tablo boyutuna göre otomatik olarak ayarlar. Ayrıntılar için dosya boyutlarını ayarlama bölümüne bakın.
Düşük Karışık Birleştirme: Düşük Karışık Birleştirme, en yaygın iş yükleri için daha iyi performans sağlayan iyileştirilmiş bir uygulamadır
MERGE. Ayrıca, değiştirilmemiş verilerde sıvı kümeleme gibi mevcut veri düzeni iyileştirmelerini korur.