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, Microsoft Fabric Delta tabloları için esnek bir veri düzeni stratejisidir. Statik Hive stili bölümleme ve el ile Z Düzeni bakımını bildirim temelli, değişiklik dostu kümeleme ile değiştirir. Hangi sütunlarda kümeleme yapılacağını belirlersiniz ve Fabric Spark Çalışma Zamanı verilerin fiziksel düzenini otomatik olarak yönetir.
Aşağıdakiler için bu makaleyi kullanın:
- Sıvı kümelemenin nasıl çalıştığını ve ne zaman kullanılacağını anlama.
- Sıvı kümelemesi ile bölümleme ve Z-Order karşılaştırması.
- Tablolarınızda kümeleme yapılandırın.
- Artımlı sıvı kümelemeyi anlayın (Çalışma Zamanı 2.0+).
- Oturum yapılandırmalarıyla kümeleme davranışını ayarlayın.
Sıvı kümeleme nedir?
Liquid clustering, Delta tablo dosyalarındaki verileri düzenleyerek kümeleme sütunlarında benzer değerlere sahip satırların birlikte bulunmasına neden olur. Düzen, sorgu yürütme sırasında gelişmiş dosya atlanması sağlar: Bir sorgu kümeleme sütunlarında filtrelendiğinde, altyapı yalnızca değer aralıkları koşulla eşleşen dosyaları okur ve gerisini atlar.
Bölümlemeden farklı olarak sıvı kümeleme:
- Sütun değeri başına fiziksel dizin yapıları oluşturmaz.
- Tablo oluşturma zamanında kümeleme sütunlarını seçmenizi gerektirmez (bunlar daha sonra değiştirilebilir).
- Binlerce küçük partisyonun neden olabileceği küçük dosya sorunlarını ortaya çıkarmadan yüksek kardinaliteye sahip sütunları işler.
- Düzen optimizasyonunu yazma zamanında değil,
OPTIMIZEsırasında uygular.
Bölümleme ve Z Sırasına göre avantajlar
Sıvı kümeleme, gelişen veri desenlerinin esnekliği, bakımı ve işlenmesi açısından hem Hive stili bölümleme hem de Z Düzenine göre önemli avantajlar sunar.
Hive stili bölümleme ile karşılaştırıldığında
| Görünüş | Hive stili bölümleme | Sıvı kümeleme |
|---|---|---|
| Granülerlik | Ayrı değer başına bir dizin (veya birleşim) | Dosya düzeyi değer aralıkları, dizin yok |
| Yüksek kardinalite | Binlerce küçük dosya/dizin oluşturur | Doğal biçimde çalışır; verileri uygun boyutlu dosyalara ayırır |
| Sütun değişiklikleri | Tam tablo yeniden yazma gerektirir |
ALTER TABLE ... CLUSTER BY sonrakine uygulanır OPTIMIZE |
| Yazma yolu | Bölümleme sütunu yazma sırasında bilinmelidir | Herhangi bir sütun sonradan kümelendirilebilir. |
| Küçük dosya sorunu | Akış sırasında veya sık yapılan ekleme işlemlerinde yaygındır | Sıkıştırma ile yönetilir OPTIMIZE |
Z-Order ile karşılaştırıldığında
| Görünüş | Z Sırası | Sıvı kümeleme |
|---|---|---|
| Sütun değişiklikleri | Yeniden çalıştırılmalıdır OPTIMIZE ZORDER BY (...) yeni sütunlarla |
ALTER TABLE ... CLUSTER BY tanımı kalıcı hale getirir |
| Artımlı destek | Artımlı mod yok; kapsamı el ile sınırlamak için kullanın WHERE |
Artımlı mod (Çalışma Zamanı 2.0+) yalnızca yeni, değiştirilmiş veya iyi durumda olmayan dosyaları otomatik olarak işler |
| Metadata | Kalıcı sütun tanımı yok | Tablo meta verilerinde depolanan kümeleme sütunları |
| Çok sütunlu düzen | Optimizasyon sırasında uygulanan Z-order eğrisi | Bir kümeleme sütunu için Z Sırası; 2' den fazla sütun için hilbert eğrisi, iyileştirilmiş veri konumu sağlar |
Sıvı kümeleme, tek sütunlu düzenler için Z-Order ve 2' den fazla sütun için Hilbert eğrisi kullanır. Bu, çok boyutlu kümeleme için yalnızca Z-Order eğrisini uygulayan Z-Order'a göre bir iyileştirmedir. Sıvı kümeleme, her iki algoritmayı da süregelen bakım maliyetini azaltan, artımlı ve meta veriyi dikkate alan bir çerçevede bir araya getirir.
Sıvı küme tablosu oluşturun
Tablo oluşturma sırasında yan tümcesini CLUSTER BY kullanarak kümeleme sütunlarını tanımlayın:
-- Create a new clustered table
CREATE TABLE dbo.sales (
order_id BIGINT,
order_date DATE,
region STRING,
amount DECIMAL(10,2)
) CLUSTER BY (order_date, region);
-- Create from query results
CREATE TABLE dbo.sales_clustered
CLUSTER BY (order_date, region)
AS SELECT * FROM raw_sales;
-- Enable on existing table
ALTER TABLE dbo.sales_txn CLUSTER BY (order_date, region);
Kümeleme sütunlarını değiştirme
Bölümlemeden farklı olarak, verileri yeniden yazmadan kümeleme sütunlarını istediğiniz zaman değiştirebilirsiniz:
-- Change clustering columns
ALTER TABLE sales CLUSTER BY (region, product_category);
-- Remove clustering (table becomes unclustered)
ALTER TABLE sales CLUSTER BY NONE;
Kümeleme sütunlarını değiştirdikten sonra, yeni düzen bir sonraki OPTIMIZE çalıştırmada uygulanır. Mevcut dosyalar, yeniden kümelendirilene kadar önceki düzenlerini korur.
OPTIMIZE ile kümeleme uygulama
Kümeleme komutu sırasında OPTIMIZE uygulanır. Kümeleme tanımı tablo meta verilerinde depolandığından, OPTIMIZE ifadesinde sütunları belirtmeye gerek yoktur:
-- Cluster the table using the defined clustering columns
OPTIMIZE sales;
-- Recluster partial Z-Cubes and Z-Cubes with different clustering keys or clustering providers
OPTIMIZE sales FULL;
Kümeleme anahtarlarını değiştirdiğinizde ve geçerli kümeleme stratejisine bağlı olmayan Z Küplerini yeniden derlemek istediğinizde kullanın OPTIMIZE FULL .
Z Küpü, sıvı kümelemenin aynı kümeleme sütunlarını paylaşan dosyaları gruplandırmak için kullandığı mantıksal birimdir. Küme anahtarları değişene veya veri miktarı 100 GB'ı aşana kadar veriler tek bir Z Küpü halinde kümelenmiş durumdadır.
Tip
Fabric Runtime 2.0'dan başlayarak, Native execution engine sıvı kümelenmiş tablolarda OPTIMIZE gerçekleştirmeyi destekler ve 30-50% daha hızlı çok boyutlu kümeleme performansı sunar. Önceki çalışma zamanları, normal hızlandırılmamış Spark yürütmesine geri döner.
Sıvı kümeleme nasıl çalışır?
Sıvı kümelenmiş bir tabloda çalıştırdığınızda OPTIMIZE aşağıdakiler gerçekleşir:
-
Dosya seçimi: Motor, kümelendirilmesi gereken dosyaları seçer.
- Çalışma Zamanı 2.0+ (artımlı kümeleme stratejisi) içinde yalnızca kümelenmemiş, iyi durumda olmayan, küçük veya silme vektör dosyaları seçilir.
- Çalışma Zamanı 1.3'te, 100 GB'tan küçük her Z Küpü içindeki tüm dosyalar, iyi kümelenmiş olup olmadıklarına bakılmaksızın seçilir.
- Bölme paketleme: Seçili dosyalar, en uygun çıkış dosyası boyutunu hedefleyen bölmeler halinde gruplandırılır.
- Yeniden bölümleme: Her bölme içindeki veriler bir boşluk doldurma eğrisi kullanılarak yeniden bölümlenmiştir (çok sütunlu için Hilbert eğrisi, tek sütun için Z Düzeni).
- Dosya yazma: Yeniden bölümlenmiş veriler, kümeleme sütunlarında sıkı değer aralıklarına sahip yeni dosyalar olarak yazılır.
- Meta veri güncelleştirmesi: Delta günlüğü, kümeleme meta verileriyle yeni dosyaları etiketleyerek dosya değişimini kaydeder.
Sonuç, kümeleme sütunlarında örtüşmeyen (veya en az çakışan) değer aralıklarına sahip dosyalardır ve altyapının sorgu önkoşullarıyla eşleşmeyen dosyaları atlamasını sağlar.
Caution
Fabric Runtime 1.3 (Delta 3.2): Sıvı kümeleme özelliğini dikkatli kullanın. Bu çalışma zamanında, sıvı kümeleme tam bir Z-Cube yeniden yazma stratejisi kullanır; Z-Cube içindeki her dosya her çalıştırmada yeniden yazılır. Z Küpü yalnızca boyutu 100 GB'ı aştığında korunur (atlanır). 100 GB'tan küçük tablolar için tam yeniden yazma, veriler zaten iyi kümelenmiş olsa bile her OPTIMIZE çalıştırmanın tüm tablo verilerini yeniden yazması anlamına gelir. Bu, ciddi bir yazma yükseltmesine neden olur.
- Çalışma Zamanı 1.3'te sıvı kümeleme ile otomatik sıkıştırma kullanmayın. Her otomatik sıkıştırma tetikleyicisi, yalnızca yeni/değiştirilen verileri kümeleme yerine tam tablo yeniden yazma işlemine neden olabilir.
- Her yazma işleminden sonra çalıştırmaktan
OPTIMIZEkaçının. Runtime 1.3'te kümelemeyi stratejik ve planlı çalıştırmalarla sınırlayın ve bunların arasında kümelemenin daha düşük güncellikte olmasını kabul edin.
Bu yazma amplifikasyonu ortadan kaldıran artımlı sıvı kümelemesi yalnızca Fabric Runtime 2.0'dan başlayarak kullanılabilir.
Artımlı sıvı kümeleme
Fabric Runtime 2.0 (Delta 4.1) ile başlayarak, sıvı kümeleme varsayılan olarak incremental kümeleme stratejisini kullanır. Artımlı strateji, standart kümeleme davranışına göre önemli bir gelişmedir.
Important
Artımlı sıvı kümeleme yalnızca Fabric Runtime 2.0 ve sonraki sürümlerde kullanılabilir. Önceki çalışma zamanlarında, OPTIMIZE Z Küpü içindeki tüm dosyaların her çalıştırmada yeniden yazıldığı standart (tam yeniden yazma) davranışını kullanır.
Artımlı kümeleme stratejisi neden önemlidir?
Standart kümeleme algoritması, iyi kümelenmiş olup olmadıklarına bakılmaksızın her çalıştırmada bir Z Küpü içindeki OPTIMIZE dosyaları (100 GB'a kadar) yeniden yazar. Küçük eklemeler alan bir tablo için kümeleme maliyeti, yeni veri miktarıyla değil tablo boyutuyla doğrusal olarak artar.
Artımlı mod, yalnızca kümeleme gerektiren dosyaları seçerek tam yeniden yazma sorununu çözer:
- Kümelenmemiş dosyalar: Meta verileri kümelemeden yeni yazılan veriler
- Küçük dosyalar: Hedef dosya boyutu eşiğinin altındaki dosyalar
- Silme vektörleri olan dosyalar: Birikmiş silmeleri temizleme eşiğini aşan dosyalar
Zaten iyi kümelenmiş, uygun şekilde boyutlandırılmış dosyalar tamamen atlanır.
Otomatik olarak yeniden sıralama
Artımlı sıvı kümelemesi, kümeleme kalitesini zaman içinde korumak için otomatik olarak kümeleme olarak bilinen otomatik çakışma algılamayı içerir. Yeni veriler geldikçe, dosyalardaki değer aralıkları arasında çakışmaya yol açabilir ve veri atlama etkinliğini azaltabilir. Otomatik olarak yeniden sıralama, dosyalar arasında çakışan değer aralıklarını algılar ve yalnızca etkilenen dosyaları seçmeli olarak yineler.
Otomatik yeniden kümeleme, kümelenecek yeni veya değişmiş veriler olduğunda OPTIMIZE kapsamında otomatik olarak çalışır. Manuel müdahale veya zamanlanmış tam yeniden kümeleme işlemleri gerekmez. Artımlı kümeleme stratejisi, veriler geliştikçe en uygun kümeleme kalitesini korur.
Tam yeniden yazma davranışına geri dön
Artımlı kümeleme stratejisini devre dışı bırakmanız ve tam yeniden yazma davranışını kullanmanız gerekiyorsa aşağıdaki yapılandırmayı ayarlayın:
SET spark.microsoft.delta.optimize.clustering.strategy.incremental = FALSE;
OPTIMIZE sales;
Alternatif olarak, oturum ayarlarını değiştirmeden bir kerelik tam yeniden kümeleme için OPTIMIZE FULL kullanın:
OPTIMIZE sales FULL;
Note
Artımlı kümeleme stratejisi, yazma amplifikasyonunda önemli düşüşler elde etmek için teorik olarak en uygun düzenden kasıtlı olarak küçük sapmalara izin verir.
OPTIMIZE FULL çalıştırmak, Z-Cubes'i teorik optimuma göre tamamen yeniden oluşturarak bu farkı kapatır, ancak daha yüksek bir yazma maliyetine yol açar.
Yapılandırma referansı
Aşağıdaki oturum yapılandırmaları, Fabric Runtime 2.0+ içinde sıvı kümeleme davranışını denetler.
Artımlı kümeleme
| Konfigürasyon | Türü | Varsayılan | Description |
|---|---|---|---|
spark.microsoft.delta.optimize.clustering.strategy.incremental |
Boolean | true |
Artımlı kümeleme için ana anahtar.
true olduğundaOPTIMIZE, yalnızca dağınık, iyi durumda olmayan, küçük ve silme vektör dosyalarını işler. olduğunda false, boyutu 100 GB'ın altındaki Z Küpleri için tüm dosyalar yeniden yazılır (standart davranış). |
spark.microsoft.delta.optimize.clustering.strategy.incremental.autoRecluster |
Boolean | true |
Çakışan veri aralıklarına sahip dosyaların otomatik olarak algılanıp yeniden toplanmalarını sağlar. Yalnızca artımlı kümeleme etkinleştirildiğinde geçerlidir. |
Otomatik yeniden kümeleme ayarlaması
Bu yapılandırmalar otomatik olarak yeniden sıralamanın duyarlılığını ve kapsamını denetler. Varsayılanlar çoğu iş yükü için uygundur. Bunları yalnızca kümeleme kalitesi ile yazma amplifikasyonu arasındaki dengeyi değiştirmeniz gerektiğinde ayarlayın.
| Konfigürasyon | Türü | Varsayılan | Description |
|---|---|---|---|
spark.microsoft.delta.optimize.clustering.strategy.incremental.autoRecluster.minOffendingFiles |
Int | 4 |
Yeniden sıralamayı tetikleme için gereken en az çakışan dosya sayısı. Daha düşük değerler daha kısa sürede (daha iyi sorgu performansı, daha yüksek yazma maliyeti) yeniden birleşir. ≥ 2 olmalıdır. |
spark.microsoft.delta.optimize.clustering.strategy.incremental.autoRecluster.minOverlapThreshold |
Double | 0.75 |
Kümeleme boyutlarının örtüşme puanı eşiği. Bu değerin üzerinde puanlama yapılan dosya çiftleri çakışan olarak kabul edilir. (0,25, 1,0] aralığında olmalıdır. Düşük değerler daha agresiftir. |
Kümeleme sütunlarını seçme
En iyi sonuçlar için en yaygın sorgu filtresi desenlerinize göre kümeleme sütunlarını seçin:
- . Daha fazla sütun, alan dolduran eğrinin sütun başına dosya atlama etkinliğini azaltır ve verileri kümeleme süresini artırır.
- Sütun kardinalitesini göz önünde bulundurun. Düşük kardinalite sütunları daha az farklı değer aralığı oluşturur ve bu da yüksek kardinalite kümeleme anahtarlarıyla birleştirildiğinde dosya atlama avantajını azaltır.
-
Sütun sırasının kümeleme üzerinde hiçbir etkisi yoktur.
CLUSTER BYsonrasında belirtilen sütunların sırası, ortaya çıkan çok boyutlu kümeleme üzerinde hiçbir etkiye sahip değildir.
Desteklenen sütun türleri
Kümeleme anahtarları olarak tüm sütun türleri kullanılamaz. Motor, uygunluğu belirlemek için her sütunun veri türünü değerlendirir.
Her zaman geçerli (atomik türler):
-
NumericType(ByteType,ShortType,IntegerType,LongType,FloatType,DoubleType,DecimalType) DateTypeTimestampTypeTimestampNTZTypeStringType
Koşullu olarak uygun:
Note
Aşağıdaki türler, Fabric Spark Runtime 2.0'dan (Delta 4.1) itibaren etkinleştirilebilir.
-
StructType:spark.microsoft.delta.clusteredTable.complexTypes.enabledetkinleştirildiğinde ve tüm uç alanlar da uygun türler olduğunda. -
ArrayTypespark.microsoft.delta.clusteredTable.complexTypes.enabled: etkinleştirildiğinde ve öğe türü uygun olduğunda. -
MapType:spark.microsoft.delta.clusteredTable.complexTypes.enabledetkinleştirildiğinde ve hem anahtar hem de değer türleri sıralanabilir ve uygunsa.
Uygun değil:
BinaryTypeBooleanTypeNullType
Dosya düzeyinde istatistiklerde kullanılan eşdeğer uygun türler için bkz. Dosya atlama— Uygun veri türleri.
Diğer özelliklerle etkileşim
| Özellik | Davranış |
|---|---|
| Bölümleme | Uyumsuz. Dosya atlama amacıyla, bölümleme üzerinden sıvı kümeleme önerilir. |
| Z Sırası | Uyumsuz. Dosya atlama amacıyla, Z-Order'a kıyasla likit kümeleme önerilir. |
| Hızlı iyileştirme | Çalışma Zamanı 2.0'dan başlayarak uyumlu. Önceki çalışma zamanlarında hızlı iyileştirmenin sıvı kümelenmiş tablolar üzerinde hiçbir etkisi yoktur.
OPTIMIZE sırasında, yeterli sayıda küçük dosya olmadığında veya uygun boyutta bir çıkış dosyası oluşturmak için yeterli veri bulunmadığında kümeleme işlemini atlar. |
| Uyarlamalı hedef dosya boyutu | Uyumlu. Uyarlamalı değerlendirme tarafından ayarlanan hedef dosya boyutu, kümeleme için hedef boyut olarak kullanılır. |
| Yazmayı en iyi duruma getirme | Uyumlu. Yazma sırasında birleştirilmiş dosyalar üretir; bunlar daha sonra OPTIMIZE sırasında kümelenir. |
| Otomatik sıkıştırma | Runtime 1.3 veya daha eski sürümlerde likit kümeleme ile kullanmayın. Bu çalışma zamanlarında, her otomatik sıkıştırma tetikleyicisi 100 GB'tan küçük Z Küplerindeki tüm verileri yeniden yazar ve bu da ciddi yazma amplifikasyonuna neden olur. Çalışma Zamanı 2.0+ sürümünde otomatik sıkıştırma uyumludur: artımlı kümeleme yalnızca yeni veya iyi durumda olmayan dosyaların yeniden yazılmasını sağlar. Otomatik sıkıştırma küçük dosya birleştirmeyi işler; OPTIMIZE kümeleme düzenini işler. |
| Silme vektörleri | Silinen satırlar eşiğini aşan dosyalar kümeleme durumlarından bağımsız olarak kümeleme için seçilir. |
| V-Order | Uyumlu. V-Order ve liquid clustering farklı eksenlerde çalışır (dosya içi düzen ile dosyalar arası değer aralıkları). Her ikisi de birlikte uygulanabilir. |
En iyi uygulamalar
- Toplu yazma işleminden sonra veya akış tabloları için bir zamanlamaya göre düzenli olarak çalıştırabilirsiniz
OPTIMIZE; ancak yalnızca artımlı kümeleme stratejisinin sık çalıştırmaları ucuz hale getirdiği Çalışma Zamanı 2.0+'da çalıştırabilirsiniz. Çalışma Zamanı 1.3 ve önceki sürümlerinde, herOPTIMIZEçalıştırma 100 GB'ın altındaki Z Küplerindeki tüm verileri yeniden yazar, bu nedenle çalıştırmalar kasıtlı ve seyrek olmalıdır. -
Tedbirli
OPTIMIZE FULLkullanın. Bunu yalnızca kümeleme sütunlarını değiştirdikten sonra veya bir kerelik kalite sıfırlamasına ihtiyaç duyduğunuzda kullanın. - Spark kullanıcı arabiriminde veya sorgu planlarında sorgu tarama ölçümlerini (taranan dosyalar ve toplam dosyalar) denetleyerek kümeleme kalitesini izleyin.
- Kümeleme için her mikro toplu işlemin yönetilebilir sayıda dosya üretmesini sağlamak üzere, akış iş yüklerinde optimize write ile birleştirin.