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_BINARY
olarak 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_lcase
olarak 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. -
ZORDER
kullanan 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_BINARY
olarak 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_BINARY
varsayılan harmanlama özelliğine geri dönüş sağlar. - Bir
MAP
harmanlanmış dize olan bir anahtara sahip olamaz. - UniForm harmanlamalarla çalışmaz.