Delta Lake'i veri dosyası boyutunu denetlemek için yapılandırma
Not
Bu makaledeki öneriler Unity Kataloğu yönetilen tabloları için geçerli değildir. Databricks, tüm yeni Delta tabloları için varsayılan ayarlarla Unity Kataloğu yönetilen tablolarının kullanılmasını önerir.
Databricks Runtime 13.3 ve üzeri sürümleri için Databricks, Delta tablo düzeni için kümeleme kullanılmasını önerir. Bkz. Delta tabloları için sıvı kümeleme kullanma.
Databricks, delta tablolarının otomatik olarak çalıştırılması OPTIMIZE
için VACUUM
tahmine dayalı iyileştirme kullanılmasını önerir. Bkz. Unity Kataloğu yönetilen tabloları için tahmine dayalı iyileştirme.
Databricks Runtime 10.4 LTS ve üzerinde, otomatik sıkıştırma ve iyileştirilmiş yazma işlemleri her zaman , UPDATE
ve DELETE
işlemleri için MERGE
etkinleştirilir. Bu işlevi devre dışı bırakamazsınız.
Delta Lake, yazma işlemleri ve OPTIMIZE
işlemler için hedef dosya boyutunu el ile veya otomatik olarak yapılandırma seçenekleri sağlar. Azure Databricks bu ayarların çoğunu otomatik olarak ayarlar ve dosyaları doğru boyutlandırmayı arayarak tablo performansını otomatik olarak geliştiren özellikleri etkinleştirir.
Unity Kataloğu yönetilen tablolarında, SQL ambarı veya Databricks Runtime 11.3 LTS veya üzeri kullanıyorsanız Databricks bu yapılandırmaların çoğunu otomatik olarak düzenler.
Databricks Runtime 10.4 LTS veya altında bir iş yükünü yükseltiyorsanız bkz . Arka plan otomatik sıkıştırmasına yükseltme.
Ne zaman çalıştırılır? OPTIMIZE
Otomatik sıkıştırma ve iyileştirilmiş yazma işlemleri küçük dosya sorunlarını azaltır, ancak tam olarak yerine OPTIMIZE
geçmeyebilir. Özellikle 1 TB'tan büyük tablolar için Databricks, dosyaları daha fazla birleştirmek için bir zamanlamaya göre çalışmanızı OPTIMIZE
önerir. Azure Databricks tablolarda otomatik olarak çalışmazZORDER
, bu nedenle gelişmiş veri atlama özelliğini etkinleştirmek için ile ZORDER
birlikte çalışmanız OPTIMIZE
gerekir. Bkz. Delta Lake için veri atlama.
Azure Databricks'te otomatik iyileştirme nedir?
Otomatik iyileştirme terimi bazen ve delta.autoOptimize.optimizeWrite
ayarları delta.autoOptimize.autoCompact
tarafından denetlenen işlevleri açıklamak için kullanılır. Bu terim, her ayarı ayrı ayrı tanımlamak için kullanımdan kaldırılmıştır. Bkz. Azure Databricks'te Delta Lake için otomatik sıkıştırma ve Azure Databricks'te Delta Lake için iyileştirilmiş yazmalar.
Azure Databricks'te Delta Lake için otomatik sıkıştırma
Otomatik sıkıştırma, küçük dosya sorunlarını otomatik olarak azaltmak için Delta tablosu bölümleri içindeki küçük dosyaları birleştirir. Otomatik sıkıştırma, bir tabloya yazma başarılı olduktan ve yazma işlemini gerçekleştiren kümede zaman uyumlu olarak çalıştırıldıktan sonra gerçekleşir. Otomatik sıkıştırma yalnızca daha önce sıkıştırılmamış dosyaları sıkıştırıyor.
Spark yapılandırmasını spark.databricks.delta.autoCompact.maxFileSize
ayarlayarak çıkış dosyası boyutunu denetleyebilirsiniz. Databricks, iş yüküne veya tablo boyutuna göre otomatik ayarlama kullanılmasını önerir. Bkz . İş yüküne göre Otomatik dosya boyutu ve tablo boyutuna göre Autotune dosya boyutu.
Otomatik sıkıştırma yalnızca en az belirli sayıda küçük dosya içeren bölümler veya tablolar için tetikler. İsteğe bağlı olarak, ayarını yaparak spark.databricks.delta.autoCompact.minNumFiles
otomatik sıkıştırmayı tetiklemeniz için gereken en düşük dosya sayısını değiştirebilirsiniz.
Otomatik sıkıştırma, aşağıdaki ayarlar kullanılarak tablo veya oturum düzeyinde etkinleştirilebilir:
- Tablo özelliği:
delta.autoOptimize.autoCompact
- SparkSession ayarı:
spark.databricks.delta.autoCompact.enabled
Bu ayarlar aşağıdaki seçenekleri kabul ediyor:
Seçenekler | Davranış |
---|---|
auto (önerilir) |
Diğer otomatik ayarlama işlevlerine saygı gösterirken hedef dosya boyutunu Tunes'a ekleyin. Databricks Runtime 10.4 LTS veya üzerini gerektirir. |
legacy |
için true diğer ad. Databricks Runtime 10.4 LTS veya üzerini gerektirir. |
true |
Hedef dosya boyutu olarak 128 MB kullanın. Dinamik boyutlandırma yok. |
false |
Otomatik sıkıştırmayı kapatır. İş yükünde değiştirilen tüm Delta tablolarında otomatik sıkıştırmayı geçersiz kılmak için oturum düzeyinde ayarlanabilir. |
Önemli
Databricks Runtime 9.1 LTS'de, diğer yazıcılar , MERGE
, UPDATE
veya OPTIMIZE
gibi DELETE
işlemleri eşzamanlı olarak gerçekleştirdiğinde, otomatik sıkıştırma bu diğer işlerin bir işlem çakışmasıyla başarısız olmasına neden olabilir. Bu, Databricks Runtime 10.4 LTS ve üzeri bir sorun değildir.
Azure Databricks'te Delta Lake için iyileştirilmiş yazma işlemleri
İyileştirilmiş yazma işlemleri, veriler yazıldıkça dosya boyutunu geliştirir ve tablodaki sonraki okumalardan yararlanır.
İyileştirilmiş yazma işlemleri, bölümlenmiş tablolar için en etkili olanlardır çünkü her bölüme yazılan küçük dosyaların sayısını azaltır. Daha az büyük dosya yazmak, çok sayıda küçük dosya yazmaktan daha verimlidir, ancak veriler yazılmadan önce karıştırıldığı için yazma gecikme süresinde bir artış görebilirsiniz.
Aşağıdaki görüntüde iyileştirilmiş yazmaların nasıl çalıştığı gösterilmektedir:
Not
Yazılan dosya sayısını denetlemek için verilerinizi yazmadan hemen önce çalışan coalesce(n)
bir repartition(n)
kodunuz olabilir. İyileştirilmiş yazma işlemleri bu deseni kullanma gereksinimini ortadan kaldırır.
İyileştirilmiş yazma işlemleri Databricks Runtime 9.1 LTS ve sonraki sürümleri için varsayılan olarak etkindir:
MERGE
UPDATE
alt sorgularlaDELETE
alt sorgularla
İyileştirilmiş yazma işlemleri, SQL ambarları kullanılırken deyimler ve INSERT
işlemler için CTAS
de etkinleştirilir. Databricks Runtime 13.3 LTS ve üzerinde Unity Kataloğu'nda kayıtlı tüm Delta tablolarında bölümlenmiş tablolar için deyimler ve INSERT
işlemler için CTAS
iyileştirilmiş yazmalar etkinleştirilmiştir.
İyileştirilmiş yazma işlemleri aşağıdaki ayarlar kullanılarak tablo veya oturum düzeyinde etkinleştirilebilir:
- Tablo ayarı:
delta.autoOptimize.optimizeWrite
- SparkSession ayarı:
spark.databricks.delta.optimizeWrite.enabled
Bu ayarlar aşağıdaki seçenekleri kabul ediyor:
Seçenekler | Davranış |
---|---|
true |
Hedef dosya boyutu olarak 128 MB kullanın. |
false |
İyileştirilmiş yazmaları kapatır. İş yükünde değiştirilen tüm Delta tablolarında otomatik sıkıştırmayı geçersiz kılmak için oturum düzeyinde ayarlanabilir. |
Hedef dosya boyutu ayarlama
Delta tablonuzdaki dosyaların boyutunu ayarlamak istiyorsanız, table özelliğini delta.targetFileSize
istediğiniz boyuta ayarlayın. Bu özellik ayarlanırsa, tüm veri düzeni iyileştirme işlemleri belirtilen boyutta dosyalar oluşturmak için en iyi çabayı gösterir. İyileştirme veya Z düzeni, otomatik sıkıştırma ve iyileştirilmiş yazma işlemleri burada örnek olarak verilebilir.
Not
Unity Kataloğu yönetilen tabloları ve SQL ambarlarını veya Databricks Runtime 11.3 LTS ve üzerini kullanırken, yalnızca OPTIMIZE
komutlar ayara targetFileSize
saygı gösterir.
Tablo özelliği |
---|
delta.targetFileSize Tür: Bayt veya daha yüksek birim cinsinden boyut. Hedef dosya boyutu. Örneğin, 104857600 (bayt) veya 100mb .Varsayılan değer: Yok |
Mevcut tablolar için, ALTER TABLE SET TBL PROPERTIES SQL komutunu kullanarak özellikleri ayarlayabilir ve kaldırabilirsiniz. Spark oturum yapılandırmalarını kullanarak yeni tablolar oluştururken de bu özellikleri otomatik olarak ayarlayabilirsiniz. Ayrıntılar için bkz . Delta tablosu özellikleri başvurusu .
İş yüküne göre otomatik dosya boyutu
Databricks, Databricks Runtime, Unity Kataloğu veya diğer iyileştirmelerden bağımsız olarak, birçok MERGE
veya DML işlemi tarafından hedeflenen tüm tablolar için tablo özelliğinin delta.tuneFileSizesForRewrites
true
olarak ayarlanmasını önerir. olarak true
ayarlandığında, tablonun hedef dosya boyutu çok daha düşük bir eşiğe ayarlanır ve bu da yoğun yazma işlemlerini hızlandırır.
Açıkça ayarlanmadıysa, Azure Databricks bir Delta tablosunda önceki 10 işlemden 9'unun işlem olup MERGE
olmadığını otomatik olarak algılar ve bu tablo özelliğini olarak true
ayarlar. Bu davranışı önlemek için bu özelliği açıkça olarak false
olarak ayarlamanız gerekir.
Tablo özelliği |
---|
delta.tuneFileSizesForRewrites Tür: Boolean Veri düzeni iyileştirmesi için dosya boyutlarının ayarlanıp ayarlanmayacağı. Varsayılan değer: Yok |
Mevcut tablolar için, ALTER TABLE SET TBL PROPERTIES SQL komutunu kullanarak özellikleri ayarlayabilir ve kaldırabilirsiniz. Spark oturum yapılandırmalarını kullanarak yeni tablolar oluştururken de bu özellikleri otomatik olarak ayarlayabilirsiniz. Ayrıntılar için bkz . Delta tablosu özellikleri başvurusu .
Tablo boyutuna göre otomatik dosya boyutu
El ile ayarlama gereksinimini en aza indirmek için Azure Databricks, Delta tablolarının dosya boyutunu tablonun boyutuna göre otomatik olarak ayarlar. Azure Databricks, tablodaki dosya sayısının fazla artmaması için daha küçük tablolar için daha küçük dosya boyutları ve daha büyük tablolar için daha büyük dosya boyutları kullanır. Azure Databricks, belirli bir hedef boyutuyla ayarlamış olduğunuz tabloları otomatik olarak ayarlamaz veya sık yeniden yazma işlemleri olan bir iş yükünü temel almaz.
Hedef dosya boyutu Delta tablosunun geçerli boyutuna bağlıdır. 2,56 TB'tan küçük tablolar için otomatik olarak seçilen hedef dosya boyutu 256 MB'tır. Boyutu 2,56 TB ile 10 TB arasında olan tablolar için hedef boyut doğrusal olarak 256 MB'tan 1 GB'a büyür. 10 TB'tan büyük tablolar için hedef dosya boyutu 1 GB'tır.
Not
Bir tablonun hedef dosya boyutu arttığında, var olan dosyalar komutuyla OPTIMIZE
daha büyük dosyalara yeniden iyileştirilmemiş olur. Bu nedenle büyük bir tabloda her zaman hedef boyuttan küçük bazı dosyalar bulunabilir. Bu küçük dosyaları daha büyük dosyalara da en iyi duruma getirmek gerekiyorsa, tablo özelliğini kullanarak delta.targetFileSize
tablo için sabit bir hedef dosya boyutu yapılandırabilirsiniz.
Bir tablo artımlı olarak yazıldığında, hedef dosya boyutları ve dosya sayıları tablo boyutuna göre aşağıdaki sayılara yakın olur. Bu tablodaki dosya sayıları yalnızca bir örnektir. Gerçek sonuçlar birçok faktöre bağlı olarak farklı olacaktır.
Tablo boyutu | Hedef dosya boyutu | Tablodaki yaklaşık dosya sayısı |
---|---|---|
10 GB | 256 MB | 40 |
1 TB | 256 MB | 4096 |
2,56 TB | 256 MB | 10240 |
3 TB | 307 MB | 12108 |
5 TB | 512 MB | 17339 |
7 TB | 716 MB | 20784 |
10 TB | 1 GB | 24437 |
20 TB | 1 GB | 34437 |
50 TB | 1 GB | 64437 |
100 TB | 1 GB | 114437 |
Veri dosyasına yazılan satırları sınırlama
Bazen, dar veri içeren tablolar belirli bir veri dosyasındaki satır sayısının Parquet biçiminin destek sınırlarını aştığı bir hatayla karşılaşabilir. Bu hatayı önlemek için SQL oturumu yapılandırmasını spark.sql.files.maxRecordsPerFile
kullanarak Delta Lake tablosu için tek bir dosyaya yazılacak en fazla kayıt sayısını belirtebilirsiniz. Sıfır veya negatif bir değer belirtilmesi hiçbir sınırı temsil eder.
Databricks Runtime 11.3 LTS ve üzerinde, Bir Delta Lake tablosuna yazmak için DataFrame API'lerini kullanırken DataFrameWriter seçeneğini maxRecordsPerFile
de kullanabilirsiniz. Belirtildiğinde maxRecordsPerFile
, SQL oturum yapılandırmasının spark.sql.files.maxRecordsPerFile
değeri yoksayılır.
Not
Databricks, yukarıda belirtilen hatadan kaçınmak için gerekli olmadıkça bu seçeneğin kullanılmasını önermez. Bu ayar, çok dar verilere sahip bazı Unity Kataloğu yönetilen tabloları için yine de gerekli olabilir.
Arka plan otomatik sıkıştırmasına yükseltme
Databricks Runtime 11.3 LTS ve üzeri ünite kataloğu yönetilen tablolarında arka plan otomatik sıkıştırması kullanılabilir. Eski bir iş yükünü veya tabloyu geçirirken aşağıdakileri yapın:
- Spark yapılandırmasını
spark.databricks.delta.autoCompact.enabled
kümeden veya not defteri yapılandırma ayarlarından kaldırın. - Her tablo için komutunu çalıştırarak
ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact)
eski otomatik sıkıştırma ayarlarını kaldırın.
Bu eski yapılandırmaları kaldırdıktan sonra, Tüm Unity Kataloğu yönetilen tabloları için arka plan otomatik sıkıştırmanın otomatik olarak tetiklenmiş olduğunu görmeniz gerekir.