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.
Not
Databricks, yönetilen tüm tablolar için sıvı kümelemeyi önerir. Apache Iceberg kullanan yönetilen tablolar için Unity Kataloğu yalnızca sıvı kümelemeyi destekler ve sütunları kümeleme anahtarları olarak yorumlar PARTITION BY . Bkz . Bölümlenmiş tabloyu sıvı kümelemeye dönüştürme.
100 TB'tan az veri içeren Azure Databricks tabloların çoğunda bölümleme gerekmez. Azure Databricks delta Lake'i varsayılan olarak tüm tablolar için kullanır ve bölümlenmemiş tablolardaki verileri alma süresine göre otomatik olarak kümeler, böylece el ile ayarlama yapmadan bölümleme benzeri performans elde edersiniz. Özel bölümleme stratejisini yalnızca bu varsayılan değerlerden daha iyi performans gösterdiğinde göz önünde bulundurun. Bkz Alma süresi kümelemesi kullanma.
Özel bölümleme stratejileri
Apache Spark ve Delta Lake'in ileri düzey kullanıcıları, varsayılan alma süresi kümelemesi performansından daha iyi performans gösteren bir bölümleme stratejisi tanımlayabilir.
Warning
Etkisiz bir bölümleme stratejisi sorgu performansını olumsuz etkileyebilir ve düzeltilmesi için verilerin tam olarak yeniden yazılmasını gerektirebilir. Tam yeniden yazma, büyük tablolar için çok pahalı ve yavaş olabilir.
Databricks, özel bölümleme stratejilerini kullanmadan önce tüm tablolar için sıvı kümelemeyi ve Unity Kataloğu yönetilen tabloları için tahmine dayalı iyileştirmeyi önerir. Bkz. Tablolar için liquid clustering kullanımı ve Unity Catalog tarafından yönetilen tablolar için tahmine dayalı optimizasyon.
Mevcut bölümlenmiş Delta Lake tablosunu sıvı kümelemeye dönüştürmek için kullanın ALTER TABLE ... REPLACE PARTITIONED BY WITH CLUSTER BY. Sıvı kümeleme hem düşük hem de yüksek kardinalite sütunları için çalışır ve statik bölümleme ile yaygın olarak karşılaşılan sabit bölüm sınırlarını ve küçük dosya sorunlarını önler. Bkz . Bölümlenmiş tabloyu sıvı kümelemeye dönüştürme.
Bölüm sütunları için desteklenen veri türleri
Bölümleme, bölüm sütunları için şu veri türlerini destekler:
- Tarih
- Zaman Damgası
- TimestampNTZ
- Zaman Aralığı
- String
- Binary
- Boolean
- Tamsayı, Uzun, Kısa, Bayt
- Kayan, Çift, Ondalık
Bölüm sütunları en üst düzey sütunlar olmalıdır. Aşağıdakilerden herhangi birine göre bölümleyemezsiniz:
-
StructType,MapType,ArrayTypeveyaVariantTypegibi karmaşık türler - Yapı alanları, örneğin
struct_col.field. Delta Lake içindekiPARTITIONED BYbir yapı alanını sütun başvurusu yerine bir ifade olarak değerlendirir.
Tabloyu yapı alanına göre düzenlemek için, bunun yerine yapı alanını kümeleme anahtarı olarak tanıyan sıvı kümeleme kullanın. Liquid Clustering, bir struct alanını önce üst düzey bir sütuna çıkarmadan onun üzerinde veri atlama yapmanın tek yoludur. Bkz Tablolar için sıvı kümeleme kullanma.
Minimum boyut önerileri
Bu minimum boyutların altında bölümleme, sorgu performansını geliştirmek yerine olumsuz yönde etkileyebilir. Bir tabloyu bölümlere ayırıp ayırmamaya karar verirken aşağıdakileri göz önünde bulundurun:
- Tablolar için:
- Veri miktarı 1 TB'tan azsa bölümlendirmeyin.
- 1 TB ile 100 TB'den fazla veri ile bölümleme yerine sıvı kümeleme kullanın. Bölümleme büyük olasılıkla performansı yardımcı olduğundan daha sık olumsuz etkiler.
- 100 TB veya daha fazla veri söz konusu olduğunda bölümleme performansı iyileştirebilir, ancak Databricks önce liquid clustering kullanılmasını ve performans iyileşmelerinin doğrulanmasını önerir.
- Bölümler için her bölümün en az 1 GB veri içerdiğini doğrulayın. Daha az, daha büyük bölümleri olan tablolar, çok daha küçük bölümleri olan tablolardan daha iyi performans gösterir.
Veri alma süresi kümelenmesi kullanma
Delta Lake kullanıldığında, bölümlenmemiş tablolar otomatik olarak alma zamanı kümelemesi kullanır. Veri alımı süresi, verilerinizi el ile iyileştirmeye veya ayarlamaya gerek kalmadan tarih saat alanlarıyla bölümleme stratejilerine benzer sorgu performansı iyileştirmeleri içerir.
Not
Databricks, bir tabloda UPDATE veya MERGE deyimlerini kullanarak çok sayıda değişiklik yaparken alım zamanına göre kümelemeyi korumak için, olay zaman damgası veya oluşturulma tarihi gibi veri giriş sırasına uygun bir sütunda "liquid clustering" kullanılmasını önerir. Bkz Tablolar için sıvı kümeleme kullanma.
Delta Lake ve Parquet bölümleme uyumluluğu
Delta Lake, verileri depolamak için Parquet kullanır ve bölümlenmiş bazı Delta Lake tablolarında Apache Spark ile depolanan Parquet tablolarına benzer veri düzenleri vardır. Apache Spark, verileri Parquet biçiminde kaydederken Hive stili bölümleme kullanır. Hive stili bölümleme Delta Lake protokolünün bir parçası değildir ve iş yükleri Delta Lake tablolarıyla etkileşime geçmek için bu bölümleme stratejisini kullanmamalıdır.
Databricks, resmi olarak desteklenen istemcileri ve API'leri kullanarak Delta Lake'te depolanan verilerle etkileşim kurmanızı önerir. Birçok Delta Lake özelliği, Parquet, Hive ve hatta önceki Delta Lake protokol sürümleriyle kullanılmış olabilecek veri düzeniyle ilgili varsayımları bozar.
Not
Delta Lake tablosu için sütun eşlemeyi etkinleştirdiğinizde, Hive stili bölümleme için bölüm dizinlerindeki sütun adlarının yerini rastgele ön ekler alır. Delta Lake sütun eşlemesiile
Delta Lake bölümlemesinin diğer veri gölleriyle karşılaştırması
Apache Spark, Parquet, Hive ve Hadoop gibi diğer açık kaynak teknolojilerde yararlı olan bölümleme teknikleri, Azure Databricks için her zaman geçerli olmayabilir. Tablonuzu bölümlemeyi seçerseniz aşağıdakileri göz önünde bulundurun:
- İşlemler bölüm sınırlarıyla tanımlanmaz. Delta Lake, işlem günlükleri aracılığıyla ACID'yi garanti ettiğinden, atomikliği garanti etmek için bir veri grubunu bir bölüme göre ayırmanız gerekmez.
- Azure Databricks işlem kümelerinde fiziksel medyaya bağlı veri yerelliği yoktur. Lakehouse'a alınan veriler bulut nesne depolama biriminde saklanır. Veri işleme sırasında veriler yerel disk depolamada önbelleğe alınırken, Azure Databricks paralel yükleme için en az miktarda veriyi belirlemek için dosya tabanlı istatistikleri kullanır.
Z sırası ve bölümler
Not
Databricks, tüm yeni tablolar için Z sırasına göre sıvı kümelemesi önerir. Bkz Tablolar için sıvı kümeleme kullanma.
Büyük veri kümelerindeki sorguları hızlandırmak için bölümlerin yanı sıra Z sırası dizinlerini de kullanabilirsiniz. Çoğu tablo, Z-order ve bölümlendirmeyi ayarlama gereksinimini ortadan kaldırmak için veri alım zamanı kümelemesi kullanır.
Bölüm sınırlarına ve Z sırasına göre bir sorgu iyileştirme stratejisi planlarken aşağıdaki kuralları göz önünde bulundurun:
- Z-order için
OPTIMIZEkomutu gereklidir. Dosyaları bölüm sınırları arasında birleştiremezsiniz ve bu nedenle Z sırası kümelemesi yalnızca bir bölüm içinde gerçekleşebilir. Bölümlenmemiş tablolar için dosyalar tablonun tamamında birleştirilebilir. - Bölümleme yalnızca düşük veya bilinen kardinalite alanları (örneğin, tarih alanları veya fiziksel konumlar) için iyi çalışır, ancak zaman damgaları gibi yüksek kardinaliteye sahip alanlar için çalışmaz. Z düzeni, yüksek kardinalite alanları ve sonsuz olarak büyüyebilecek alanlar (örneğin, zaman damgaları veya bir işlemler veya siparişler tablosundaki müşteri kimliği) dahil olmak üzere tüm alanlar için çalışır.
- Bölümleme için kullanılan alanlarda Z düzeni yapamazsınız.
Azure Databricks mevcut bölümler etrafında nasıl iyileştirme yapar
Birçok müşteri, mevcut verileri yeniden yazmadan mevcut Parquet tabanlı bir tabloyu Delta Lake tablosuna dönüştürmek için CONVERT TO DELTA deyimini kullanmak gibi yöntemlerle, Parquet tabanlı veri göllerinden Delta Lake’e geçiş yapar. Dönüştürme mevcut verileri yeniden yazmadığından, büyük tablolar önceki bölümleme stratejilerini devralabilir.
Bazı Databricks optimizasyonları, uygun olduğunda bu bölümleri kullanarak Delta Lake için optimize edilmemiş bölümleme stratejilerinin olumsuz performans etkilerini azaltır.
Delta Lake ve Apache Spark açık kaynak teknolojilerdir. Databricks bölümlemeye olan dayanıklılığı azaltan özelliklere sahip olsa da, açık kaynak topluluğu karmaşıklık katan yeni özellikler oluşturabilir.