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.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Bu sayfada Delta Lake verilerinin OPTIMIZE düzenini en iyi duruma getiren komutu açıklanmaktadır. Verilerin bir alt kümesini iyileştirebilir veya verileri sütuna göre birlikte kullanabilirsiniz. Birlikte bulundurma belirtmezseniz ve tablo sıvı kümelemesi kullanmıyorsa Delta Lake, kutu paketleme iyileştirmesi gerçekleştirir.
Sözdizimi
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Not
Paketleme iyileştirmesi bir kez etkili olur: Aynı veri kümesinde iki kez çalıştırırsanız, ikinci çalıştırmanın hiçbir etkisi olmaz. Disk üzerindeki boyutlarına göre eşit dengeli veri dosyaları üretir, ancak dosya başına tanımlama grubu sayısı olması gerekmez. İki ölçü en sık bağıntılı.
Z-Ordering bir kez etkili değildir, ancak artımlı olarak çalışır. Z-Ordering'in aldığı sürenin birden çok çalıştırmaya göre azaldığı garanti değildir. Ancak, yalnızca Z-Ordered olan bir bölüme yeni veri eklenmediyse, söz konusu bölümde yeniden Z-Ordering çalıştırmanın hiçbir etkisi olmaz. Z-Ordering, tanımlama grubu sayısına göre eşit dengeli veri dosyaları oluşturur, ancak diskte veri boyutu olması gerekmez. İki ölçü genellikle bağıntılı olur, ancak en iyi duruma getirme görev sürelerinde dengesizlik, ayrıştığında ortaya çıkabilir.
Not
Databricks Runtime kullanırken çıkış dosyası boyutunu denetlemek için Spark yapılandırmasınıspark.databricks.delta.optimize.maxFileSize ayarlayın. Varsayılan değer (1 GB) değeridir 1073741824 . Belirtilmesi 104857600 , dosya boyutunu 100 MB olarak ayarlar.
Parametre
-
Var olan bir Delta tablosunu tanımlar. Ad bir zamansal belirtim veya seçenek belirtimi içermemelidir.
FULLŞunlar için geçerlidir:
Databricks Runtime 16.0 ve üzerini işaretleyinTablodaki tüm veri dosyalarını yeniden yazar. Şu şekilde kullanın
OPTIMIZE table_name FULL:- Daha önce kümelenmiş veriler de dahil olmak üzere tablonun tamamını iyileştirin ( sıvı kümeleme kullanan tablolar için).
- özelliğini kullanarak tablonun sıkıştırma codec bileşenini değiştirdiğinizde mevcut veri dosyalarını yeniden sıkıştırın
delta.parquet.compression.codec.
Sıkıştırma codec'ini değiştirdikten sonra mevcut verileri yeniden sıkıştırmak için komutunu çalıştırın
OPTIMIZE table_name FULL:-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Sıvı kümelemesi etkinleştirilmiş bir tablodaki dosyaların alt kümesini iyileştirmek için bir koşul (Databricks Runtime 18.1 ve üzeri) ile birleştirin
FULLWHERE. Yalnızca tek bir kümeleme sütunundaki basit aralık önkoşulları desteklenir. Bir dosya, aralığının herhangi bir bölümü koşulla çakışıyorsa eklenir. Örneğin,OPTIMIZE events FULL WHERE date > 15dosyanın aralığı koşulla çakıştığı için aralığı(col_min = 10, col_max = 20)olan bir dosya içerir.WHEREBir bölüm / kümeleme koşuluyla eşleşen satırların alt kümesini iyileştirir. Yalnızca bölümleme/ kümeleme anahtarı özniteliklerindeki filtreler desteklenir.
Sıvı kümeleme kullanan tablolar için bunun yerine (Databricks Runtime 18.1 ve üzeri) kullanın
OPTIMIZE table_name FULL WHERE predicate.ZORDER BYNot
Databricks, Z sırası yerine tüm yeni tablolar için sıvı kümelemesi önerir. Bkz Tablolar için sıvı kümeleme kullanma.
Sütun bilgilerini aynı dosya kümesinde birleştirir. Delta Lake veri atlama algoritmaları, okunması gereken veri miktarını azaltmak için ortak yerellik kullanır. Birden çok sütunu virgülle ayrılmış liste olarak belirtebilirsiniz, ancak her ek sütunda ortak yerelliğin etkinliği azalır.
Bu yan tümceyi sıvı kümeleme kullanan tablolarda kullanamazsınız.
Örnekler
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Daha fazla bilgi için bkz. Veri dosyası düzenini iyileştirme.