Veri dosyası boyutunu denetleme

Not

Bu makaledeki el ile ayarlama önerileri, otomatik dosya boyutu ayarlama kullanan Unity Kataloğu yönetilen tabloları için geçerli değildir. Yeni tablolar için, varsayılan ayarlarla Unity Kataloğu yönetilen tablolarını kullanın.

Databricks Runtime 13.3 ve üzeri sürümleri için Databricks, tablo düzeni için kümeleme kullanılmasını önerir. Bkz Tablolar için sıvı kümeleme kullanma.

Databricks, tablolar için OPTIMIZE ve VACUUM öğelerini otomatik olarak çalıştırmak üzere 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 sonrasında, MERGE, UPDATE ve DELETE işlemleri için otomatik sıkıştırma ve optimize edilmiş yazma her zaman etkinleştirilmiştir. Bu işlevi devre dışı bırakamazsınız.

Yazma işlemleri ve OPTIMIZE işlemler için hedef dosya boyutunu el ile veya otomatik olarak yapılandırma seçenekleri vardır. 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ükseltmek istiyorsanı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. Databricks, gelişmiş veri atlama için sıvı kümeleme önerir. Sıvı kümeleme etkinleştirildiğinde, OPTIMIZE verileri kümeleme anahtarları tarafından otomatik olarak yeniden düzenler. Bkz Tablolar için sıvı kümeleme kullanma.

Unity Kataloğu yönetilen tablolarında tahmine dayalı iyileştirme, tahmine dayalı iyileştirmenin etkinleştirildiği tablolarda otomatik olarak çalıştırılır OPTIMIZE .

Azure Databricks'te otomatik iyileştirme nedir?

Otomatik iyileştirme terimi, bazen ve autoOptimize.autoCompact ayarları tarafından denetlenen özelliği tanımlamak için kullanılır. Bu terim, her ayarı ayrı ayrı tanımlamak için kullanımdan kaldırılmıştır. Bkz. Otomatik sıkıştırma ve İyileştirilmiş yazma işlemleri.

Otomatik sıkıştırma

Otomatik sıkıştırma, küçük dosya sorunlarını azaltmak için tablo bölümleri içindeki küçük dosyaları birleştirir. Yazma işlemi başarılı olduktan sonra, yazmayı gerçekleştiren kümede senkronize bir şekilde çalışır ve daha önce sıkıştırılmamış dosyaları sıkıştırır.

Otomatik sıkıştırma ve tahmine dayalı iyileştirme, ayrı ayrı veya birlikte kullanılabilen bağımsız özelliklerdir. Otomatik sıkıştırma, yazma işlemini gerçekleştiren kümede çalıştırılırken tahmine dayalı iyileştirme, sunucusuz işlem kullanarak bakım işlemlerini zaman uyumsuz olarak çalıştırır.

Otomatik sıkıştırmayı yapılandırmak için aşağıdaki ayarları kullanın:

Setting Delta Iceberg Description
Otomatik sıkıştırmayı etkinleştirme (tablo özelliği) autoOptimize.autoCompact autoOptimize.autoCompact Tablo düzeyinde otomatik sıkıştırmayı etkinleştirir.
Otomatik sıkıştırmayı etkinleştirme (Spark oturumu) spark.databricks.delta.autoCompact.enabled spark.databricks.iceberg.autoCompact.enabled Oturum düzeyinde otomatik sıkıştırmayı etkinleştirir.
En büyük çıkış dosyası boyutu spark.databricks.delta.autoCompact.maxFileSize spark.databricks.iceberg.autoCompact.maxFileSize Hedef çıkış dosyası boyutunu denetler.
Sıkıştırmayı tetikleyen en düşük dosyalar spark.databricks.delta.autoCompact.minNumFiles spark.databricks.iceberg.autoCompact.minNumFiles Otomatik sıkıştırmayı tetikleyebilmek için bir bölümde veya tabloda gereken en az küçük dosya sayısını ayarlar.

Bu ayarlar aşağıdaki seçenekleri kabul ediyor:

Seçenekler Davranış
auto (önerilir) Hedef dosya boyutunu diğer otomatik ayarlama işlevlerini göz önünde bulundurarak ayarlar. Databricks Runtime 10.4 LTS veya üzerini gerektirir.
legacy Diğer ad için true. 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 tablolar için otomatik sıkıştırmayı geçersiz kılmak için oturum düzeyinde ayarlanabilir.

Not

Azure Databricks, çıktı dosyası boyutunu tablo boyutuna göre denetlemek için otomatik ayarlama kullanılmasını önerir. Bkz. Tablo boyutuna göre dosya boyutunu otomatik ayarla.

İyileş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:

İyileştirilmiş yazma işlemleri

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 CTAS deyimler ve INSERT işlemler için de etkinleştirilir. Databricks Runtime 13.3 LTS ve üzerindeki Unity Kataloğu'nda kayıtlı tüm tablolarda, CTAS deyimleri ve INSERT işlemleri için bölümlenmiş tablolarla ilişkili 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 özelliği: autoOptimize.optimizeWrite
  • SparkSession ayarı: spark.databricks.delta.optimizeWrite.enabled (Delta) veya spark.databricks.iceberg.optimizeWrite.enabled (Iceberg)

Bu ayarlar aşağıdaki seçenekleri kabul ediyor:

Seçenekler Davranış
true Hedef dosya boyutu olarak 128 MB kullanın.
false Optimize edilmiş yazmaları kapatır. İş yükünde değiştirilen tüm tablolar için otomatik sıkıştırmayı geçersiz kılmak için oturum düzeyinde ayarlanabilir.

Hedef dosya boyutu ayarlama

Tablonuzdaki dosyaların boyutunu ayarlamak istiyorsanız , table özelliğinitargetFileSize istediğiniz boyuta ayarlayın. Ayarlandığında, tüm veri düzeni iyileştirme işlemleri optimize etme, sıvı kümeleme, otomatik sıkıştırma ve en iyi duruma getirilmiş yazma işlemleri dahil olmak üzere belirtilen boyutta dosyalar oluşturmak için en iyi çabayı gösterir.

Not

Unity Kataloğu yönetilen tabloları ve SQL veri ambarlarını veya Databricks Runtime 11.3 LTS ve üzerini kullanırken, yalnızca OPTIMIZE komutları targetFileSize ayarına saygı gösterir.

Mülkiyet Description
delta.targetFileSize (Delta)
iceberg.targetFileSize (Buzdağı)
Tür: Bayt veya daha yüksek birim cinsinden boyut.
Açıklama: Hedef dosya boyutu. Örneğin, 104857600 (bayt) veya 100mb.
Varsayılan değer: Yok

Mevcut tablolar için, 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 Tablo özellikleri referansı bölümüne bakın.

Tablo boyutuna göre dosya boyutunu otomatik ayarla

El ile ayarlama gereksinimini en aza indirmek için Azure Databricks, tabloları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 ayarladığınız tabloları otomatik olarak ayarlamaz.

Hedef dosya boyutu, tablonun 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 OPTIMIZE komutuyla daha büyük dosyalara yeniden optimize edilmez. 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 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 256MB 40
1 Terabayt (TB) 256MB 4096
2,56 TB 256MB 10240
3 TB (Terabayt) 307 MB 12108
5 TB 512MB 17339
7 TB (Terabayt) 716 MB 20784
10 TB (terabayt) 1GB 24437
20 TB (Terabayt) 1GB 34437
50 TB 1GB 64437
100 TB 1GB 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 bir tablo 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, DataFrame API'lerini kullanarak bir tabloya yazmak için DataFrameWriter seçeneğini maxRecordsPerFile de kullanabilirsiniz. maxRecordsPerFile belirtildiğinde, SQL oturum yapılandırması spark.sql.files.maxRecordsPerFile değeri göz ardı edilir.

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 sürümlerinde, Unity Catalog tarafından yönetilen tablolar için arka planda otomatik sıkıştırma mümkündür. Arka plan otomatik sıkıştırması tahmine dayalı iyileştirme gerektirmez. Eski bir iş yükünü veya tabloyu geçirirken aşağıdakileri yapın:

  1. Küme veya not defteri yapılandırma ayarlarından Spark yapılandırması spark.databricks.delta.autoCompact.enabled (Delta) veya spark.databricks.iceberg.autoCompact.enabled (Iceberg)'i kaldırın.
  2. Eski otomatik sıkıştırma ayarlarını kaldırmak için her tablo için (Delta) veya ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact) (Iceberg) komutunu çalıştırın ALTER TABLE <table_name> UNSET TBLPROPERTIES (iceberg.autoOptimize.autoCompact) .

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.