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.
Komut, OPTIMIZE hem Delta Lake hem de Apache Iceberg tablolarında veri düzenini geliştirmek için veri dosyalarını yeniden yazar. Sıvı kümelemenin etkinleştirildiği tablolar için OPTIMIZE verileri sıvı kümeleme anahtarlarına göre gruplandırmak için veri dosyalarını yeniden yazar. Bölümleri tanımlanmış tablolar için, dosya sıkıştırma ve veri düzeni bölümler içinde gerçekleştirilir.
Tahmine dayalı iyileştirme, Unity Kataloğu yönetilen tablolarında otomatik olarak OPTIMIZE çalıştırır. Databricks, veri bakımını basitleştirmek ve depolama maliyetlerini azaltmak için tüm Unity Kataloğu yönetilen tablolarında tahmine dayalı iyileştirmenin etkinleştirilmesini önerir. Bkz. Unity Kataloğu tarafından yönetilen tablolar için tahmine dayalı optimizasyon.
Liquid clustering olmayan Delta Lake tabloları, yeniden yazma sırasında veri kümelemeyi iyileştirmek için isteğe bağlı olarak ZORDER BY ifadesi içerebilir. Apache Iceberg tabloları, ZORDER yerine kümeleme ve sıralama stratejileri kullanır. Databricks bölümler veya ZORDERdiğer veri düzeni yaklaşımları yerine sıvı kümeleme kullanılmasını önerir.
Bkz. OPTIMIZE.
Important
Databricks Runtime 16.0 ve üstü sürümlerde, sıvı kümeleme etkinleştirildiğinde tabloların yeniden kümelemelerini zorlamak için OPTIMIZE FULL ile kullanabilirsiniz. Bkz Yeniden sıralamaya zorlama.
Söz dizimi örnekleri
Komutunu çalıştırarak sıkıştırmayı tetikleyin OPTIMIZE :
SQL
OPTIMIZE table_name
Python
Python DeltaTable API'si Delta Lake'e özgüdür.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Scala
Scala DeltaTable API'si Delta Lake'e özgüdür.
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().executeCompaction()
Büyük miktarda veriniz varsa ve yalnızca bir alt kümesini iyileştirmek istiyorsanız, kullanarak WHEREisteğe bağlı bir bölüm koşulu belirtin:
SQL
OPTIMIZE table_name WHERE date >= '2022-11-18'
Python
Python DeltaTable API'si Delta Lake'e özgüdür.
from delta.tables import *
deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Scala
Scala DeltaTable API'si Delta Lake'e özgüdür.
import io.delta.tables._
val deltaTable = DeltaTable.forName(spark, "table_name")
deltaTable.optimize().where("date='2021-11-18'").executeCompaction()
Bin-packing için aşağıdaki bilgileri göz önünde bulundurun:
- Bin-packing optimizasyonu idempotenttir, yani aynı veri kümesi üzerinde iki kez çalıştırıldığında, ikinci çalıştırmanın hiçbir etkisi olmaz.
- Bin-packing, depolama boyutları açısından dengeli veri dosyaları üretmeyi amaçlar; ancak bu denge, dosya başına düşen demet sayısı açısından mutlaka sağlanmaz. Ancak, iki ölçü genellikle bağıntılı.
Delta Lake tablolarının okuyucuları anlık görüntü yalıtımı kullanır, bu da işlem günlüğünden gereksiz dosyaları kaldırdığında OPTIMIZE kesintiye uğramadıkları anlamına gelir.
OPTIMIZE Tabloda hiçbir veri değişikliği yapılmadığı için, önce ve sonra okunduktan sonra OPTIMIZE aynı sonuçlara sahip olur. Akış kaynağı olan bir tabloda OPTIMIZE işlemini gerçekleştirmek, kaynak olarak bu tabloyu kullanan mevcut veya gelecekteki hiçbir akışı etkilemez.
OPTIMIZE kaldırılan dosyalar ve işlem tarafından eklenen dosyalar için dosya istatistiklerini (min, max, total vb.) döndürür. Optimizasyon istatistikleri, Z-Sıralama istatistiklerini, optimize edilen paket ve bölümlerin sayısını içerir.
Küçük dosyaları otomatik sıkıştırmayı kullanarak da otomatik olarak sıkıştırabilirsiniz. Bkz. Otomatik sıkıştırma.
Çalıştırılması önerilen sıklık OPTIMIZE
OPTIMIZE uygun maliyetli olduğunda otomatik olarak çalıştığından emin olmak için Unity Kataloğu yönetilen tabloları için tahmine dayalı iyileştirmeyi etkinleştirin.
çalıştırma OPTIMIZEsıklığını seçtiğinizde, performans ile maliyet arasında bir denge vardır. Daha iyi son kullanıcı sorgu performansı için daha sık çalıştırın OPTIMIZE . Artan kaynak kullanımı nedeniyle bu daha yüksek bir maliyete neden olur. Maliyeti iyileştirmek için daha az sıklıkta çalıştırın.
Databricks, günlük olarak OPTIMIZE çalıştırarak başlamanızı ve ardından maliyet ve performans arasında denge kurmak için sıklığı ayarlamanızı önerir.
için önerilen örnek türleri OPTIMIZE
Her iki işlem de büyük miktarlarda Parquet kod çözme ve kodlama yapan yoğun CPU kullanan işlemlerdir.
Databricks, İşlem için iyileştirilmiş örnek türlerini önerir.
OPTIMIZE ekli SSD'lerden de yararlanır.