Delta Lake'i veri dosyası boyutunu denetlemek için yapılandırma

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.

Not

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 . Delta Lake 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 , UPDATEve DELETE işlemleri için MERGEetkinleştirilir. Bu işlevi devre dışı bırakamazsınız.

Aksi belirtilmediği sürece, bu makaledeki tüm öneriler en son çalışma zamanlarını çalıştıran Unity Kataloğu yönetilen tabloları için geçerli değildir.

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 11.0 veya altındaki 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 OPTIMIZEgeç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.optimizeWriteayarları 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.minNumFilesotomatik 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.1 veya üzerini gerektirir.
legacy için truediğer ad. Databricks Runtime 10.1 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 10.3 ve altında, diğer yazarlar , MERGE, UPDATEveya OPTIMIZE gibi DELETEişlemleri eşzamanlı olarak gerçekleştirdiğinde, otomatik sıkıştırma diğer işlerin bir işlem çakışmasıyla başarısız olmasına neden olabilir. Bu, Databricks Runtime 10.4 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:

Optimized writes

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 sorgularla
  • DELETE 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.1 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ğinidelta.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.tuneFileSizesForRewritestrue olarak ayarlanmasını önerir. olarak trueayarlandığı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 trueayarlar. 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 10.5 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.