Delta tablolarında sıvı kümeleme uygulama

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, OPTIMIZE sı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:

  1. 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.
  2. Bölme paketleme: Seçili dosyalar, en uygun çıkış dosyası boyutunu hedefleyen bölmeler halinde gruplandırılır.
  3. 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).
  4. 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.
  5. 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 OPTIMIZE kaçı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 BY sonrası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)
  • DateType
  • TimestampType
  • TimestampNTZType
  • StringType

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.enabled etkinleştirildiğinde ve tüm uç alanlar da uygun türler olduğunda.
  • ArrayType spark.microsoft.delta.clusteredTable.complexTypes.enabled: etkinleştirildiğinde ve öğe türü uygun olduğunda.
  • MapType: spark.microsoft.delta.clusteredTable.complexTypes.enabled etkinleştirildiğinde ve hem anahtar hem de değer türleri sıralanabilir ve uygunsa.

Uygun değil:

  • BinaryType
  • BooleanType
  • NullType

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ırabilirsinizOPTIMIZE; 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, her OPTIMIZE ç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 FULL kullanı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.