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.
Sıvı kümeleme, ve tablo bölümlemini ZORDERdeğiştiren bir veri düzeni iyileştirme tekniğidir. Tablo yönetimini basitleştirir ve verileri kümeleme anahtarlarına göre otomatik olarak düzenleyerek sorgu performansını iyileştirir.
Geleneksel bölümlemeden farklı olarak, kümeleme anahtarlarını mevcut verileri yeniden yazmadan yeniden tanımlayabilirsiniz. Bu, değişen analitik gereksinimlerin yanı sıra veri düzeninizin de gelişmesine olanak tanır. Sıvı kümeleme hem akış tabloları hem de gerçekleştirilmiş görünümler için geçerlidir.
Important
Sıvı kümelemeyi genel olarak Delta Lake tablolarında ve Yönetilen Apache Iceberg tablolarında Genel Önizleme'de kullanabilirsiniz. Delta Lake tabloları için GA desteği Databricks Runtime 15.2 ve üzeri ile kullanılabilir. Databricks, en iyi performans için en son Databricks Runtime'ın kullanılmasını önerir. Apache Iceberg tabloları için Databricks Runtime 16.4 LTS ve üzeri gereklidir.
Sıvı kümeleme ne zaman kullanılır?
Databricks akış tabloları ve gerçekleştirilmiş görünümler de dahil olmak üzere tüm yeni tablolar için liquid clustering'i önerir. Aşağıdaki senaryolar özellikle kümelemeden yararlanıyor:
- Yüksek kardinalite sütunlarını filtreleyen sorgular.
- Ağır veri kayması olan tablolar.
- Bakım ve ayarlama eforu gerektiren hızlı büyüyen tablolar.
- Eşzamanlı yazma gereksinimleri olan tablolar.
- Çeşitli veya değişen erişim desenlerine sahip tablolar.
- Tipik bir bölüm anahtarının çok fazla veya çok az bölümden sonuç döndürebileceği tablolar.
Sıvı kümelemasını etkinleştirme
Var olan bir bölümlenmemiş tabloda veya tablo oluşturma sırasında sıvı kümeleme özelliğini etkinleştirebilirsiniz. Kümeleme, bölümleme veya ZORDERile uyumlu değildir. Databricks, platformun tablonuzdaki veriler için tüm düzen ve iyileştirme işlemlerini yönetmesine izin vermenizi önerir. Sıvı kümeleme özelliğini etkinleştirdikten sonra, OPTIMIZE işler yürüterek verileri artımlı olarak kümeleyin. Bkz. Kümelemeyi tetikleme.
Kümeleme ile tablo oluşturma
Sıvı kümelemini CLUSTER BY etkinleştirmek için, aşağıdaki örneklerde gösterildiği gibi tümceciği bir tablo oluşturma deyimine ekleyin. Databricks Runtime 14.2 ve üzerinde, Delta Lake tablolarında sıvı kümelemeye olanak tanımak için Python veya Scala'da DataFrame API'lerini ve DeltaTable API'sini kullanabilirsiniz.
SQL
-- Create an empty Delta table with clustering on col0
CREATE TABLE table1(col0 INT, col1 string) CLUSTER BY (col0);
-- Create table from existing data with clustering
-- Note: CLUSTER BY must appear after table name, not in SELECT clause
CREATE TABLE table2 CLUSTER BY (col0)
AS SELECT * FROM table1;
-- Copy table structure including clustering configuration
CREATE TABLE table3 LIKE table1;
Python
# Create an empty Delta table with clustering on col0
(DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0") # Single clustering key
.execute())
# Create clustered table from existing DataFrame
df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
# Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
Scala
// Create an empty Delta table with clustering on col0
DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0")
.execute()
// Create clustered table from existing DataFrame
val df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
// Alternative: DataFrameWriterV2 API (:re[DBR] 14.2+)
val df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
Important
Kümeleme anahtarlarını ayarlamak için DataFrame API'lerini kullanırken, kümeleme sütunlarını yalnızca tablo oluşturma sırasında veya overwrite modunda (CREATE OR REPLACE TABLE türü işlemlerle) tanımlayabilirsiniz. Modu kullanırken append kümeleme anahtarlarını değiştiremezsiniz.
Verileri eklerken var olan bir tablodaki kümeleme anahtarlarını değiştirmek için SQL ALTER TABLE komutlarını kullanarak kümeleme yapılandırmasını veri yazma işlemlerinizden ayrı olarak değiştirin. Bkz. Kümeleme anahtarlarını değiştirme.
Databricks Runtime 16.0 ve üzeri sürümleriyle Yapılandırılmış Akış yazma işlemlerini kullanarak sıvı kümeleme özelliği etkinleştirilmiş tablolar oluşturabilirsiniz. Databricks, aşağıdaki örneklerde olduğu gibi en iyi performans için Databricks Runtime 16.4 ve üzerini kullanmanızı önerir:
SQL
CREATE TABLE table1 (
col0 STRING,
col1 DATE,
col2 BIGINT
)
CLUSTER BY (col0, col1);
Python
(spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
)
Scala
spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
Warning
Sıvı kümeleme özelliği etkinleştirilmiş Delta tablolarında Delta yazıcı sürüm 7 ve okuyucu sürüm 3 kullanılır. Bu protokolleri desteklemeyen Delta istemcileri bu tabloları okuyamaz. Tablo protokolü sürümlerini düşüremezsiniz. Bkz . Delta Lake özellik uyumluluğu ve protokolleri.
Varsayılan özellik etkinleştirmeyi (silme vektörleri gibi) geçersiz kılmak için bkz . Varsayılan özellik etkinleştirmeyi geçersiz kılma (isteğe bağlı).
Mevcut tablolarda etkinleştir
Aşağıdaki söz dizimini kullanarak var olan bölümlenmemiş Delta tablosunda sıvı kümeleme özelliğini etkinleştirin:
-- Alter an existing table
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)
Apache Iceberg için, mevcut yönetilen Iceberg tablosunda sıvı kümelemeyi etkinleştirirken silme vektörlerini ve Satır Kimliklerini açıkça kapatmanız gerekir.
Note
Varsayılan davranış, önceden yazılmış verilere kümeleme uygulamaz. Yeniden kümelemeyi zorlamak için OPTIMIZE FULL veya OPTIMIZE FULL WHERE <predicate> kullanın. Bkz Yeniden sıralamaya zorlama.
Kümeleme anahtarlarını kaldırma
Kümeleme anahtarlarını kaldırmak için aşağıdaki söz dizimini kullanın:
ALTER TABLE table_name CLUSTER BY NONE;
Kümeleme anahtarlarını seçme
Tavsiye
Databricks, sorgu desenlerinize göre kümeleme anahtarlarını akıllı bir şekilde seçen desteklenen tablolar için otomatik sıvı kümelemenin kullanılmasını önerir. Bkz. Otomatik sıvı kümeleme.
Önemli seçim yönergeleri
Kümeleme anahtarlarını el ile belirttiğinizde, sorgu filtrelerinde en sık kullanılan sütunlara göre sütunları seçin. Kümeleme anahtarlarını istediğiniz sırada tanımlayabilirsiniz. İki sütun yüksek oranda bağıntılıysa, bunlardan yalnızca birini kümeleme anahtarı olarak eklemeniz gerekir.
En fazla dört kümeleme anahtarı belirtebilirsiniz. Daha küçük tablolar için (10 TB'tan az), tek bir sütunda filtreleme yaparken daha fazla kümeleme anahtarı kullanılması performansı düşürebilir. Örneğin, dört tuşla filtreleme, iki anahtarla filtrelemekten daha kötü bir performans gösterir. Ancak tablo boyutu arttıkça bu performans farkı tek sütunlu sorgular için göz ardı edilebilir hale gelir.
Kümeleme anahtarları, istatistiklerin toplandığı sütunlar olmalıdır. Varsayılan olarak, Delta tablosundaki ilk 32 sütunda istatistikler toplanır. Bkz. İstatistik sütunlarını belirtme.
Desteklenen veri türleri
Kümeleme, kümeleme anahtarları için şu veri türlerini destekler:
- Date
- Timestamp
- TimestampNTZ (Databricks Runtime 14.3 LTS ve üzeri)
- String
- Tamsayı, Uzun, Kısa, Bayt
- Kayan, Çift, Ondalık
Bölümlemeden veya Z düzeninden geçiş
Mevcut bir tabloyu dönüştürüyorsanız aşağıdaki önerileri göz önünde bulundurun:
| Geçerli veri iyileştirme tekniği | Kümeleme anahtarları için öneri |
|---|---|
| Hive stili bölümleme | Bölüm sütunlarını kümeleme anahtarları olarak kullanın. |
| Z sırası dizin oluşturma |
ZORDER BY Sütunları kümeleme anahtarları olarak kullanın. |
| Hive stili bölümleme ve Z sırası | Kümeleme anahtarları olarak hem bölüm sütunlarını hem ZORDER BY de sütunları kullanın. |
| Kardinaliteyi azaltmak için oluşturulan sütunlar (örneğin, zaman damgasının tarihi) | Özgün sütunu kümeleme anahtarı olarak kullanın ve oluşturulan bir sütun oluşturmayın. |
Otomatik sıvı kümeleme
Databricks Runtime 15.4 LTS ve üzerinde Unity Kataloğu tarafından yönetilen Delta tabloları için otomatik sıvı kümelemeyi etkinleştirebilirsiniz. Otomatik sıvı kümeleme, Azure Databricks CLUSTER BY AUTO yan tümcesini kullanarak sorgu performansını iyileştirmek için kümeleme anahtarlarını akıllı bir şekilde seçmesini sağlar.
Otomatik sıvı kümeleme nasıl çalışır?
Otomatik sıvı kümeleme, kullanım desenlerinize göre akıllı iyileştirme sağlar:
- Tahmine dayalı iyileştirme gerektirir: Otomatik anahtar seçimi ve kümeleme işlemleri bakım işlemi olarak zaman uyumsuz olarak çalıştırılır. Bkz. Unity Catalog için yönetilen tabloların tahmine dayalı iyileştirilmesi.
- Analiz eder sorgu iş yükünü: Azure Databricks tablonun geçmiş sorgu iş yükünü analiz eder ve kümelendirme için en uygun aday sütunları belirler.
- Değişikliklere uyarlar: Sorgu desenleriniz veya veri dağıtımlarınız zaman içinde değişirse, otomatik sıvı kümeleme performansı iyileştirmek için yeni anahtarlar seçer.
- Maliyet duyarlı seçim: Azure Databricks, veri atlama iyileştirmelerinden kaynaklanan tahmini maliyet tasarrufları, veri kümeleme maliyetini aştığında kümeleme anahtarlarını değiştirir.
Otomatik sıvı kümelemesi aşağıdaki nedenlerle anahtarları seçemeyebilir:
- Tablo, sıvı kümelemeden yararlanamayacak kadar küçük.
- Tablo, önceki manuel anahtarlardan veya sorgu kalıpları ile eşleşen doğal ekleme düzenine göre zaten etkin bir kümeleme düzenine sahiptir.
- Tabloda sık kullanılan sorgular yoktur.
- Databricks Runtime 15.4 LTS veya üzerini kullanmıyorsunuz.
Veri ve sorgu özellikleri ne olursa olsun, Unity Kataloğu tarafından yönetilen tüm tablolar için otomatik sıvı kümelemeyi uygulayabilirsiniz. Buluşsal yöntemler, kümeleme anahtarlarını seçmenin maliyet açısından yararlı olup olmadığına karar verir.
Databricks Runtime sürüm uyumluluğu
Sıvı kümelediğini destekleyen tüm Databricks Runtime sürümlerinden otomatik kümeleme özelliği etkinleştirilmiş tabloları okuyabilir veya yazabilirsiniz. Ancak akıllı anahtar seçimi, Databricks Runtime 15.4 LTS'de sunulan meta verilere dayanır.
Otomatik olarak seçilen anahtarların tüm iş yüklerinize fayda sağladığından ve yeni anahtarları seçerken bu iş yüklerinin dikkate alındığından emin olmak için Databricks Runtime 15.4 LTS veya üzerini kullanın.
Otomatik sıvı kümelemasını etkinleştirme veya kapatma
Yeni veya mevcut bir tabloda otomatik sıvı kümeleme özelliğini etkinleştirmek veya kapatmak için aşağıdaki söz dizimini kullanın:
SQL
-- Create an empty table.
CREATE OR REPLACE TABLE table1(column01 int, column02 string) CLUSTER BY AUTO;
-- Enable automatic liquid clustering on an existing table,
-- including tables that previously had manually specified keys.
ALTER TABLE table1 CLUSTER BY AUTO;
-- Disable automatic liquid clustering on an existing table.
ALTER TABLE table1 CLUSTER BY NONE;
-- Disable automatic liquid clustering by setting the clustering keys
-- to chosen clustering columns or new columns.
ALTER TABLE table1 CLUSTER BY (column01, column02);
CREATE OR REPLACE table_name belirtmeden CLUSTER BY AUTO çalıştırırsanız ve tablo zaten varsa ve otomatik sıvı kümelemesi etkinse, AUTO ayarı devre dışı bırakılır ve kümeleme sütunları korunmaz. Otomatik sıvı kümelemini ve daha önce seçilen kümeleme sütunlarını korumak için replace deyimine ekleyin CLUSTER BY AUTO . Korunduğunda, tahmine dayalı iyileştirme en iyi kümeleme anahtarlarını tanımlamak için tablonun geçmiş sorgu iş yükünü korur.
Python
df = spark.read.table("table1")
df.write
.format("delta")
.option("clusterByAuto", "true")
.saveAsTable(...)
# Set clustering columns and auto to provide a hint for initial selection
df.write
.format("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option("clusterByAuto", "true")
.saveAsTable(...)
# Using DataFrameWriterV2
df.writeTo(...).using("delta")
.option("clusterByAuto", "true")
.create()
# Set clustering columns and auto to provide a hint for initial selection
df.writeTo(...).using("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option("clusterByAuto", "true")
.create()
# Set clusterByAuto for streaming tables
spark.readStream.table("source_table")
.writeStream
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
# Specify a hint for clustering columns with both auto and columns
spark.readStream.table("source_table")
.writeStream
.clusterBy("column1", "column2")
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
Python API, Databricks Runtime 16.4 ve üstü sürümlerde mevcuttur.
.clusterBy ile .option('clusterByAuto', 'true) birlikte kullandığınızda, davranış aşağıdaki gibidir:
- Eğer bu, otomatik sıvı kümelenmesini ilk kez ayarlıyorsa, manuel giriş her zaman dikkate alınır ve
.clusterByiçindeki kümeleme sütunları ayarlanır. - Bu zaten otomatik sıvı kümeleme içeren bir tabloysa, kullanan
.clusterBybir ipucu bir kez kabul edilebilir. Örneğin,.clusterBytarafından belirtilen sütunlar, yalnızca tabloda zaten kümeleme sütunları ayarlanmamışsa ayarlanır.
Python yalnızca tablo oluştururken veya değiştirirken kullanabilirsiniz. Var olan bir tablonun durumunu değiştirmek clusterByAuto için SQL'i kullanın.
Important
DataFrame API'leri kullanılırken, clusterByAuto seçeneği yalnızca overwrite modu kullanılırken ayarlanabilir.
clusterByAuto modu kullanılırken append ayarlayamazsınız. Bu kısıtlama, kümeleme sütunlarını el ile ayarlamayla aynıdır. Kümeleme ayarları yalnızca mod kullanılarak overwrite tablo oluşturma veya değiştirme işlemleri sırasında yapılandırılabilir.
Geçici bir çözüm olarak, verileri eklerken var olan bir tablodaki clusterByAuto durumu değiştirmek istiyorsanız SQL komutlarını kullanarak ALTER TABLE kümeleme yapılandırmasını veri yazma işlemlerinizden ayrı olarak değiştirin.
Otomatik kümelemenin etkinleştirilip etkinleştirilmediğini denetleyin
Tabloda otomatik sıvı kümelemenin etkinleştirilip etkinleştirilmediğini denetlemek için DESCRIBE TABLE ya da SHOW TBLPROPERTIES kullanın.
Otomatik sıvı kümeleme etkinse, clusterByAuto özelliği true olarak ayarlanır. özelliği, clusteringColumns otomatik olarak veya el ile seçilen geçerli kümeleme sütunlarını gösterir.
Limitations
Apache Iceberg için otomatik sıvı kümelemesi kullanılamaz.
Kümelenmiş tabloya veri yazma
Kümelenmiş Delta tablosuna yazmak için, sıvı kümeleme tarafından kullanılan tüm Delta yazma protokolü tablosu özelliklerini destekleyen bir Delta yazıcı istemcisi kullanmanız gerekir. Kümelenmiş bir Iceberg tablosuna yazmak için Unity Kataloğu'nun Iceberg REST Katalog API'sini kullanabilirsiniz. Azure Databricks'da Databricks Runtime 13.3 LTS ve üzerini kullanmanız gerekir.
Yazma sırasında kümelenmeyi destekleyen işlemler
Yazmaya odaklanan işlemler şunlardır:
-
INSERT INTOişlemler -
CTASveRTASdeyimleri -
COPY INTOParquet biçiminden spark.write.mode("append")
Kümeleme için boyut eşikleri
Yazmada kümeleme yalnızca işlemdeki veriler boyut eşiğine uyduğunda tetikler. Bu eşikler kümeleme sütunlarının sayısına göre değişir ve Unity Kataloğu yönetilen tablolarında diğer Delta tablolarına göre daha düşüktür.
| Kümeleme sütunlarının sayısı | Unity Kataloğu tarafından yönetilen tablolar için eşik boyutu | Diğer Delta tabloları için eşik boyutu |
|---|---|---|
| 1 | 64 MB | 256MB |
| 2 | 256MB | 1GB |
| 3 | 512MB | 2GB |
| 4 | 1GB | 4GB |
Tüm işlemler sıvı kümelemesi uygulamadığından Databricks, tüm verilerin verimli bir şekilde kümelendiğinden emin olmak için sık çalıştırmayı OPTIMIZE önerir.
akış tabanlı iş yükleri
Yapılandırılmış Akış iş yükleri, Spark yapılandırmasını spark.databricks.delta.liquid.eagerClustering.streaming.enabled olarak ayarladığınızda yazma işlemi sırasında kümeleme için true desteği sağlar. Bu iş yükleri için kümeleme yalnızca son beş akış güncelleştirmesinden en az birinin yukarıdaki tablodan boyut eşiğini aşması durumunda tetikler.
Kümelemeyi tetikleme
Tahmine dayalı iyileştirme, etkin tablolar için komutları otomatik olarak çalıştırır OPTIMIZE . Bkz. Unity Catalog için yönetilen tabloların tahmine dayalı iyileştirilmesi. Tahmine dayalı iyileştirme kullanılırken Databricks zamanlanmış OPTIMIZE işleri devre dışı bırakmanızı önerir.
Kümelemeye neden olmak için Databricks Runtime 13.3 LTS veya üzerini kullanmanız gerekir. Databricks, büyük tablolarda daha hızlı OPTIMIZE performans için Databricks Runtime 17.2 ve üzerini önerir. Tablonuzda komutunu OPTIMIZE kullanın:
OPTIMIZE table_name;
Sıvı kümelemesi artımlı bir işlemdir; başka bir OPTIMIZE deyişle yalnızca kümeleme gerektiren verileri barındırmak için verileri gerektiği şekilde yeniden yazar.
OPTIMIZE kümelenen verilerle eşleşmeyen kümeleme anahtarlarıyla veri dosyalarını yeniden yazmaz. Bkz Yeniden sıralamayı zorlamaya.
Tahmine dayalı iyileştirme kullanmıyorsanız, Databricks verileri kümelendirmek için düzenli OPTIMIZE işleri zamanlamayı önerir. Birçok güncelleştirme veya eklemenin yaşandığı tablolar için Databricks, bir veya iki saatte bir OPTIMIZE iş zamanlamanızı önerir. Sıvı gruplandırma artımlı olduğundan, kümelenmiş tablolar için çoğu iş hızlı bir şekilde çalıştırılır.
Yeniden sıralamaya zorla
Databricks Runtime 16.0 ve üstü sürümlerde, aşağıdaki söz dizimini kullanarak bir tablodaki tüm kayıtları tekrar kümelemeye zorlayabilirsiniz.
OPTIMIZE table_name FULL;
Important
OPTIMIZE FULL çalıştırılması, mevcut tüm verileri gerektiği gibi yeniden kümelendirir. Daha önce belirtilen anahtarlarda kümelenmemiş büyük tablolar için bu işlem saatler sürebilir.
Kümeleyi ilk kez etkinleştirdiğinizde veya kümeleme anahtarlarını değiştirdiğinizde OPTIMIZE FULL çalıştırın. Daha önce OPTIMIZE FULL çalıştırdıysanız ve kümeleme anahtarlarını değiştirmediyseniz OPTIMIZE FULLOPTIMIZEile aynı şekilde çalışır. Bu senaryoda, OPTIMIZE artımlı bir yaklaşım benimser ve yalnızca daha önce sıkıştırılmamış dosyaları yeniden yazar. Veri düzeninin geçerli kümeleme anahtarlarını yansıtmasını sağlamak için her zaman OPTIMIZE FULL kullanın.
Kısmi yeniden kümeleme
Databricks Runtime 18.1 ve üzerini kullanarak, kayıtların OPTIMIZE FULL WHERE <predicate> bir alt kümesini yeniden sıralamaya zorlayabilirsiniz. Bir dosya, aralığının herhangi bir bölümü koşulla çakışıyorsa eklenir. Bkz. Parametreler.
OPTIMIZE events FULL WHERE event_date >= '2025-01-01';
Kümelenmiş tablodan veri okuma
Kümelenmiş Delta tablosundaki verileri, silme vektörlerini okumayı destekleyen herhangi bir Delta Lake istemcisi kullanarak okuyabilirsiniz. Iceberg REST Katalog API'sini kullanarak kümelenmiş bir Iceberg tablosundaki verileri okuyabilirsiniz. Sıvı kümeleme, kümeleme anahtarlarını filtrelerken otomatik veri atlama yoluyla sorgu performansını geliştirir.
SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";
Kümeleme anahtarlarını yönetme
Tablonun nasıl kümelendiğini görme
Aşağıdaki örneklerde gösterildiği gibi, bir tablonun kümeleme anahtarlarını görmek için komutları kullanabilirsiniz DESCRIBE :
DESCRIBE TABLE table_name;
DESCRIBE DETAIL table_name;
Kümeleme anahtarlarını değiştirme
Aşağıdaki örnekte olduğu gibi bir komut çalıştırarak ALTER TABLE istediğiniz zaman tablonun kümeleme anahtarlarını değiştirebilirsiniz:
ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);
Kümeleme anahtarlarını değiştirdiğinizde, sonraki OPTIMIZE ve yazma işlemleri yeni kümeleme yaklaşımını kullanır, ancak mevcut veriler yeniden yazılmaz. Mevcut verileri güncelleştirilmiş kümeleme anahtarlarıyla yeniden yazmak için bkz. Yeniden sıralamaya zorlama.
Aşağıdaki örnekte olduğu gibi anahtarları NONEolarak ayarlayarak da kümeleme özelliğini kapatabilirsiniz:
ALTER TABLE table_name CLUSTER BY NONE;
Küme anahtarlarının olarak NONE ayarlanması kümelenmiş verileri yeniden yazmaz, ancak gelecekteki OPTIMIZE işlemlerin kümeleme anahtarlarını kullanmasını engeller.
Harici bir motordan sıvı kümelemeyi kullanma
Harici Iceberg motorlarından yönetilen Iceberg tablolarında sıvı kümelemeyi etkinleştirebilirsiniz. Sıvı kümelemeye olanak tanımak için tablo oluştururken bölüm sütunlarını belirtin. Unity Kataloğu bölümleri kümeleme anahtarları olarak yorumlar. Örneğin, OSS Spark'ta aşağıdaki komutu çalıştırın:
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;
Sıvı kümeleme özelliğini kapatmak için:
ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;
Iceberg bölüm evrimi kullanarak kümeleme anahtarlarını değiştirmek için:
ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;
Demet dönüştürmesi kullanarak bir bölüm belirtirseniz Unity Kataloğu ifadeyi bırakır ve sütunu kümeleme anahtarı olarak kullanır:
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));
Sıvı kümeleme ile tablolar için uyumluluk
Sıvı kümeleme, okuma ve yazma için belirli Databricks Runtime sürümlerini gerektiren Delta Lake tablo özelliklerini kullanır. Databricks Runtime 14.1 ve üzerinde sıvı kümeleme ile oluşturulan tablolar varsayılan olarak checkpoint V2 kullanır. Databricks Runtime 13.3 LTS ve üzerinde checkpoint V2 ile tabloları okuyabilir ve yazabilirsiniz. Bkz. Checkpoint V2.
Databricks Runtime 12.2 LTS'yi 13.2'ye kullanan okuyucuları desteklemek için, denetim noktası V2'yi devre dışı bırakın ve tablo protokolunu düşürun. Bkz. Klasik sürüme düşürme.
Varsayılan özellik etkinleştirmeyi geçersiz kıl (isteğe bağlı)
Sıvı kümeleme etkinleştirmesi sırasında varsayılan Delta tablosu özellik etkinleştirmesini geçersiz kılabilirsiniz. Bu, bu tablo özellikleriyle ilişkili okuyucu ve yazıcı protokollerinin yükseltılmasını engeller. Aşağıdaki adımları tamamlamak için mevcut bir tablonuz olmalıdır:
Bir veya daha fazla özelliği devre dışı bırakabilen tablo özelliğini ayarlamak için kullanın
ALTER TABLE. Örneğin, silme vektörlerini devre dışı bırakmak için aşağıdakileri çalıştırın:ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);Aşağıdakileri çalıştırarak tabloda sıvı kümeleme özelliğini etkinleştirin:
ALTER TABLE <table_name> CLUSTER BY (<clustering_columns>)
Aşağıdaki tabloda geçersiz kılabileceğiniz Delta özellikleri ve etkinleştirmenin Databricks Runtime sürümleriyle uyumluluğu nasıl etkileyebileceği hakkında bilgi sağlanmaktadır.
| Delta özelliği | Çalışma zamanı uyumluluğu | Etkinleştirmeyi geçersiz kılmak için özellik | Kapalı olduğunda sıvı kümelenmesi üzerindeki etkisi |
|---|---|---|---|
| Silme vektörleri | Okuma ve yazma işlemleri Databricks Runtime 12.2 LTS ve üzerini gerektirir. | 'delta.enableDeletionVectors' = false |
Silme vektörlerinin devre dışı bırakılması satır düzeyi eşzamanlılığı devre dışı bırakarak işlemlerin ve kümeleme işlemlerinin çakışma olasılığını artırır. Bkz. Satır düzeyi eşzamanlılık.DELETE, MERGEve UPDATE komutları daha yavaş çalışabilir. |
| Satır takibi | Yazma işlemleri Databricks Runtime 13.3 LTS ve üzerini gerektirir. Herhangi bir Databricks Runtime sürümünden okunabilir. | 'delta.enableRowTracking' = false |
Satır izlemeyi devre dışı bırakmak satır düzeyi eşzamanlılığı devre dışı bırakarak işlemlerin ve kümeleme işlemlerinin çakışma olasılığını artırır. Bkz. Satır düzeyi eşzamanlılık. |
| Kontrol Noktası V2 | Okuma ve yazma işlemleri Databricks Runtime 13.3 LTS ve üzerini gerektirir. | 'delta.checkpointPolicy' = 'classic' |
Sıvı kümeleme davranışı üzerinde hiçbir etkisi yoktur. Bkz. Checkpoint V2. |
Limitations
- Databricks Runtime 15.1 ve altı: Yazma sırasında kümeleme, filtreler, birleştirmeler veya toplamalar içeren kaynak sorgularını desteklemez.
- Databricks Runtime 15.4 LTS ve altı: Yapılandırılmış Akış yazma kullanarak sıvı kümelemeyi etkinleştirmiş bir tablo oluşturamazsınız. Yapılandırılmış Akış'ı kullanarak liquid clustering etkin olan var olan bir tabloya veri yazabilirsiniz.
- Apache Iceberg v2: Silme vektörleri ve satır izleme Iceberg tablolarında desteklenmediğinden Apache Iceberg v2 ile yönetilen Iceberg tablolarında satır düzeyi eşzamanlılık desteklenmez.