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
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:
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-
UPDATEalt sorgularla -
DELETEalt 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) veyaspark.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
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:
- Küme veya not defteri yapılandırma ayarlarından Spark yapılandırması
spark.databricks.delta.autoCompact.enabled(Delta) veyaspark.databricks.iceberg.autoCompact.enabled(Iceberg)'i kaldırın. - 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ınALTER 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.