Delta Lake için veri atlama
Not
Databricks Runtime 13.3 ve üzeri sürümleri için Databricks, Delta tablo düzeni için sıvı kümeleme kullanılmasını önerir. Kümeleme, Z sıralama ile uyumlu değildir. Bkz. Delta tabloları için sıvı kümeleme kullanma.
Delta tablosuna veri yazdığınızda veri atlama bilgileri otomatik olarak toplanır. Azure Databricks'te Delta Lake, daha hızlı sorgular sağlamak için sorgu zamanında bu bilgilerden (en düşük ve en yüksek değerler, null sayılar ve dosya başına toplam kayıtlar) yararlanır.
Deyimlerde ZORDER
kullanılan sütunlar için toplanan istatistikleriniz olmalıdır. Bkz . Z sıralama nedir?.
Delta istatistik sütunlarını belirtme
Varsayılan olarak Delta Lake, tablo şemanızda tanımlanan ilk 32 sütunla ilgili istatistikleri toplar. Bu koleksiyon için iç içe sütundaki her alan tek bir sütun olarak kabul edilir. Aşağıdaki tablo özelliklerinden birini ayarlayarak bu davranışı değiştirebilirsiniz:
Tablo özelliği | Databricks Runtime destekleniyor | Açıklama |
---|---|---|
delta.dataSkippingNumIndexedCols |
Desteklenen tüm Databricks Runtime sürümleri | Delta'nın istatistikleri topladığı sütun sayısını artırın veya azaltın. Sütun sırasına bağlıdır. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS ve üzeri | Delta Lake'in istatistikleri topladığı sütun adlarının listesini belirtin. Yerine geçenler dataSkippingNumIndexedCols . |
Tablo özellikleri tablo oluşturma sırasında veya deyimleriyle ALTER TABLE
ayarlanabilir. Bkz . Delta tablosu özellikleri başvurusu.
Bu özelliğin güncelleştirilmesi, mevcut verilerin istatistiklerini otomatik olarak yeniden derlemez. Bunun yerine, tabloya veri eklerken veya güncelleştirirken gelecekteki istatistik toplama davranışını etkiler. Delta Lake, geçerli istatistik sütunları listesine dahil olmayan sütunlar için istatistiklerden yararlanmaz.
Databricks Runtime 14.3 LTS ve üzerinde, aşağıdaki komutu kullanarak Delta tablosu için istatistikleri yeniden derlemeyi el ile tetikleyebilirsiniz:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Not
İstatistik koleksiyonu sırasında uzun dizeler kesilir. Özellikle de sütunlar sorguları filtrelemek için sık kullanılmadıysa, uzun dize sütunlarını istatistik koleksiyonunun dışında tutabilirsiniz.
Z sıralama nedir?
Not
Databricks, tüm yeni Delta tabloları için sıvı kümeleme kullanılmasını önerir. Sıvı kümeleme ile birlikte kullanamazsınız ZORDER
.
Z sıralama, aynı dosya kümesindeki ilgili bilgileri birlikte kullanmak için kullanılan bir tekniktir . Bu ortak yerellik, Azure Databricks veri atlama algoritmalarında Delta Lake tarafından otomatik olarak kullanılır. Bu davranış, Azure Databricks'te Delta Lake'in okuması gereken veri miktarını önemli ölçüde azaltır. Z-order verilerine, yan tümcesinde ZORDER BY
sıralanması gereken sütunları belirtirsiniz:
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Bir sütunun sorgu koşullarında yaygın olarak kullanılmasını bekliyorsanız ve bu sütunun kardinalitesi yüksekse (çok sayıda ayrı değer) kullanın ZORDER BY
.
için ZORDER BY
birden çok sütunu virgülle ayrılmış liste olarak belirtebilirsiniz. Ancak, her ek sütunda yerelliğin etkinliği düşer. Üzerinde istatistik toplanmayan sütunlarda Z sıralaması etkisiz ve kaynak israfı olabilir. Bunun nedeni, veri atlama işleminin minimum, maksimum ve sayı gibi sütun yerel istatistikleri gerektirmesidir. Şemadaki sütunları yeniden sıralayarak belirli sütunlarda istatistik toplamayı yapılandırabilir veya istatistikleri toplamak için sütun sayısını artırabilirsiniz.
Not
Z sıralama bir kez etkili değildir, ancak artımlı bir işlem olmayı hedefler. Z sıralama için geçen sürenin birden çok çalıştırmayı azaltması garanti değildir. Ancak, yalnızca Z sıralı olan bir bölüme yeni veri eklenmediyse, bu bölümün başka bir Z sıralamasının hiçbir etkisi olmaz.
Z sıralama, tanımlama grubu sayısına göre eşit dengeli veri dosyaları oluşturmayı amaçlar, ancak diskte veri boyutu olması gerekmez. İki ölçü genellikle bağıntılı olur, ancak durum böyle olmadığında, en iyi duruma getirme görev sürelerinde dengesizliğe yol açan durumlar olabilir.
Örneğin, tarih ve
ZORDER BY
en son kayıtlarınız geçmiştekilerden çok daha genişse (örneğin, daha uzun diziler veya dize değerleri), işin görev sürelerinin yanı sıra sonuçta elde edilen dosya boyutlarının da çarpıtılması beklenirOPTIMIZE
. Ancak bu yalnızca komutunOPTIMIZE
kendisi için bir sorundur; sonraki sorgular üzerinde herhangi bir olumsuz etkisi olmamalıdır.