Aracılığıyla paylaş


Delta Lake için harmanlama desteği

Databricks Runtime 16.1 ve üzeri sürümlerin Delta tablolarındaki dize alanları için harmanlama belirtebilirsiniz.

Bir tablo için harmanlamayı etkinleştirmek, collations-preview yazar tablosu özelliğini ekler. Databricks Runtime 15.4 ve üzerinde harmanlamanın etkinleştirildiği tabloları okuyabilirsiniz. Bkz. Azure Databricks Delta Lake özellik uyumluluğunu nasıl yönetir?.

Not

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

Sütun düzeyinde harmanlama içeren tabloyu oluşturun

Aşağıdaki komutu kullanarak sütun düzeyinde harmanlama ile yeni bir tablo oluşturabilirsiniz:

CREATE TABLE $tableName (
 nonCollatedColName STRING,
 collatedColName STRING COLLATE UNICODE,
 structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
 mapColName MAP<STRING, STRING COLLATE UNICODE>,
 arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta

Harmanlamayı belirtmek için tablo sütununu değiştirme

Aşağıdaki komutları kullanarak harmanlamayı kullanmak için mevcut bir sütunu güncelleştirebilirsiniz:

ALTER TABLE tableName ALTER COLUMN columnName TYPE newType

Varsayılan olmayan harmanlamayı kaldırmak için (varsa):

ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY

Sütun harmanlamasını utf8_lcaseolarak değiştirmek için:

ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE

Bir tablonun harmanlamasını değiştirmek, daha önce yazılmış verilerin istatistiklerini veya veri düzenini otomatik olarak güncelleştirmez. Databricks, yeni harmanlama altında geçmiş verileri atlamayı geliştirmek için aşağıdakileri önerir:

  • Mevcut veri dosyaları için dosya atlama istatistiklerini güncellemek amacıyla ANALYZE table_name COMPUTE DELTA STATISTICS çalıştırın.
  • Sıvı kümelemenin etkinleştirildiği tablolar için, sıvı kümelemeye güncelleştirmek için OPTIMIZE FULL table_name çalıştırın.
  • ZORDERkullanan tablolar için aşağıdakileri yapın:
    • Aşağıdaki komutla varsayılan Spark yapılandırmasını geçersiz kılarak Spark Oturumu'nda artımlı iyileştirmeyi devre dışı bırakın:

      SET spark.databricks.optimize.incremental=false
      
    • Var olan tüm veri dosyalarını yeniden yazmak için OPTIMIZE table_name ZORDER BY zorder_column çalıştırın.

Harmanlama her zaman sorgunun sonuçlarında Azure Databricks tarafından dikkate alınacaktır.

Tablo için harmanlamayı devre dışı bırakma

Harmanlama özelliğini bırakmadan önce tablodaki her dize sütunu için harmanlamayı açıkça devre dışı bırakmanız gerekir.

Bir sütunun harmanlamasını UTF8_BINARYolarak ayarlamak için aşağıdaki söz dizimini kullanın:

ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY

Tablo özelliğini bırakmak için aşağıdaki komutu çalıştırın:

ALTER TABLE table_name
DROP FEATURE collations-preview

bkz. Delta tablosu özelliklerini bırakma.

Şema evrimi ve harmanlama

Harmanlama, aşağıdaki kuralları kullanarak şema evrimiyle etkileşim kurar:

  • Hedef tabloda bir kaynak sütun zaten varsa, hedef tablodaki sütunun harmanlaması değişmeden kalır.
  • Kaynak sütunda harmanlama belirtilmişse, hedef tabloya eklenen sütun belirtilen harmanlamayı kullanır.
  • Harmanlama içeren bir sütun eklendiğinde hedef tabloda harmanlama etkinleştirilmemişse, tablo collations-preview özelliği etkinleştirilir.

Sınırlama

Harmanlamanın etkinleştirildiği tablolar için aşağıdaki sınırlamalar vardır:

  • Databricks Runtime tarafından tanınmayan bir harmanlama ile oluşturulmuş dış delta tabloları sorgulandığında bir hata atar.
  • Delta Paylaşımı için destek yoktur.
  • Harmanlanmış sütunlar CHECK kısıtlamalarıyla kullanılamaz.
  • Oluşturulan sütunlar harmanlama kullanamaz.
  • Harmanlanmış sütunlar, bloom filtre indeks sütunlarıyla kullanılamaz.
  • Scala veya Python için OSS Delta Lake API'lerinde harmanlama desteği yoktur. Harmanlamayı etkinleştirmek için Spark SQL veya DataFrame API'lerini kullanmanız gerekir.
  • Dinamik bölüm üzerine yazma işlemi, harmanlanmış sütunlarda desteklenmez.
  • Yapılandırılmış Akış durum bilgisi olan sorgularda harmanlanmış sütunlara başvurulamaz.
  • collations-preview tablosuna saygı duymayan dış okuyucular, UTF8_BINARYvarsayılan harmanlama özelliğine geri dönüş sağlar.
  • Bir MAP harmanlanmış dize olan bir anahtara sahip olamaz.
  • UniForm harmanlamalarla çalışmaz.