Delta Lake için harmanlama desteği

Databricks Runtime 16.4 LTS ve sonraki sürümlerde, sütun düzeyinde dize karşılaştırmalarını ve sıralama davranışını denetlemek için Delta Lake tablolarındaki dize alanlarında harmanlama belirtin; örneğin büyük/küçük harfe duyarlı olmayan eşleştirmeyi veya yerel ayara duyarlı sıralamayı etkinleştirebilirsiniz.

Harmanlama türlerinin, adlandırma kurallarının ve öncelik kurallarının tam açıklaması için bkz. Harmanlama.

Varsayılan olarak, Delta Lake dize alanları için harmanlamayı UTF8_BINARYolarak ayarlar.

Önemli

Karşılaştırmayı etkinleştirmek, Delta Lake tablonuza collations yazıcı tablo özelliğini ekler; bu da dış okuyucularla ve diğer platform özellikleriyle uyumluluğu etkiler. Üretim tablolarında harmanlamayı etkinleştirmeden önce Sınırlamalar bölümünü gözden geçirin.

Harmanlama ile tablo oluşturma

Yeni bir tablo oluştururken sütun düzeyinde harmanlama belirtebilirsiniz. Harmanlama, iç içe türlerin içindeki en üst düzey dize sütunlarına ve dize alanlarına uygulanabilir:

CREATE TABLE catalog.schema.my_table (
  id BIGINT,
  name STRING COLLATE UTF8_LCASE,
  metadata STRUCT<label: STRING COLLATE UNICODE>,
  tags ARRAY<STRING COLLATE UTF8_LCASE>,
  properties MAP<STRING, STRING COLLATE UTF8_LCASE>
) USING delta

Note

MAP anahtarlar harmanlamayı kullanamaz. Yalnızca MAP değerler harmanlanmış dizeleri destekler.

Var olan bir sütunda harmanlamayı değiştirme

ALTER TABLE kullanarak mevcut bir sütunun sıralama düzenini değiştirebilirsiniz.

Örneğin, bir sütunu büyük/küçük harfe duyarlı olmayan harmanlama olarak ayarlamak için:

ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_LCASE

Örneğin, bir sütunu varsayılan ikili harmanlama durumuna geri döndürmek için:

--
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY

Harmanlamayı değiştirdikten sonra istatistikleri ve veri düzenini güncelleştirme

Sütunun sıralama düzenini değiştirmek mevcut verileri yeniden yazmaz veya istatistikleri güncellemez. Sorgular yeni harmanlama altında doğru sonuçları hemen döndürür, ancak aşağıdaki adımları uygulayana kadar dosya atlama ve kümeleme daha az etkili olabilir:

  1. Sütun için dosya atlama istatistiklerini güncelleştirin.
   ANALYZE TABLE my_table COMPUTE DELTA STATISTICS
  1. Tablonuzda sıvı kümeleme kullanılıyorsa kümeleme düzenini yeniden yazın:
   OPTIMIZE FULL my_table
  1. Tablonuzda ZORDER kullanılıyorsa artımlı iyileştirmeyi kapatın ve tüm dosyaları yeniden yazın:
   SET spark.databricks.optimize.incremental = false;
   OPTIMIZE my_table ZORDER BY zorder_column;

Bu adımların atlanması yanlış sonuçlara neden olmaz, ancak sonraki tam yeniden yazma tarihine kadar geçmiş verilerde sorgu performansını düşürebilir.

Azure Databricks, sorgu sonuçlarındaki harmanlamayı her zaman dikkate alır.

Bir tablo için sıralamayı devre dışı bırakın

Harmanlama tablosu özelliğini kaldırmak için harmanlanan tüm sütunları yeniden UTF8_BINARY olarak ayarlayın.

İlk olarak, harmanlanmış her sütun için şu komutu çalıştırın:

ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY

Ardından tablo özelliğini bırakın:

ALTER TABLE my_table DROP FEATURE collations

Diğer ayrıntılar için bkz . Delta Lake tablo özelliğini bırakma ve tablo protokolünü düşürme .

Şema evrimi ve sıralama

Şema evrimi, sıralama düzeni belirtilmiş sütunlar eklediğinde veya birleştirdiğinde, aşağıdaki kurallar geçerlidir:

  • Hedef tabloda bir kaynak sütun zaten varsa, hedef tablonun bu sütun için harmanlaması korunur. Kaynak sütunun harmanlaması yoksayılır.
  • Kaynak sütun yeniyse ve harmanlama belirtilmişse, hedef tablo yeni sütun için bu harmanlamayı benimser.
  • Hedef tabloda tablo özelliği henüz collations etkinleştirilmemişse, harmanlanmış sütun eklemek bunu otomatik olarak etkinleştirir.

Sınırlamalar

Harmanlamanın etkinleştirildiği Delta Lake tabloları için aşağıdaki sınırlamalar geçerlidir:

Uyumluluk ve birlikte çalışabilirlik:

  • Tablo özelliğini tanımayan dış okuyucular collations, yanlış sıralama düzenleri veya karşılaştırmalar üretebilecek olan UTF8_BINARY öğesine geri döner.
  • OpenSharing, varsayılan olmayan harmanlama sütunlarında tek tek bölümlerin paylaşımını desteklemez. Bunun yerine tabloyu paylaşın.
  • Iceberg okumaları, karşılaştırma içeren tablolar için desteklenmez.
  • Databricks Runtime tarafından tanınmayan bir sıralamayla harici olarak oluşturulan Delta Lake tabloları sorgulandığında hata verir.
  • Scala veya Python için OSS Delta Lake API'leri harmanlamayı desteklemez. Spark SQL veya DataFrame API'lerini kullanın.

Sorgu ve özellik kısıtlamaları:

  • Harmanlanmış sütunlar CHECK kısıtlamalarında kullanılamaz.
  • Harmanlanmış sütunlara oluşturulan sütun ifadelerinde başvurulamaz
  • Harmanlanmış sütunlar bloom filtre dizinleriyle kullanılamaz (kullanım dışı)
  • Yapılandırılmış Akış durum bilgisi olan sorgularda (toplamalar, birleştirmeler, yinelenenleri kaldırma) harmanlanmış sütunlara başvurulamaz
  • MAP Anahtar sıralanmış dize olamaz. Yalnızca MAP değerler harmanlamayı destekler

Ek kaynaklar