Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Liquid clustering zastępuje partycjonowanie tabel i ZORDER
, aby upraszczać decyzje dotyczące układu danych i optymalizować wydajność wykonywania zapytań. Zapewnia elastyczność ponownego definiowania kluczy klastrowania bez ponownego zapisywania istniejących danych, dzięki czemu układ danych może rozwijać się wraz z potrzebami analitycznymi w czasie. Klastrowanie cieczy dotyczy zarówno tabel przetwarzanych strumieniowo, jak i widoków zmaterializowanych.
Ważne
Klastrowanie Liquid jest ogólnie dostępne dla tabel Delta Lake i w wersji próbnej dla zarządzanych tabel Apache Iceberg.
W przypadku wszystkich tabel usługi Delta Lake z włączonym klastrowaniem płynnym usługa Databricks zaleca używanie środowiska Databricks Runtime 15.2 lub nowszego. Publiczna wersja zapoznawcza z ograniczeniami jest dostępna w środowisku Databricks Runtime 13.3 LTS i nowszym. Współbieżność na poziomie wiersza jest obsługiwana w środowisku Databricks Runtime 13.3 LTS i nowszym i jest ogólnie dostępna w środowisku Databricks Runtime 14.2 lub nowszym dla wszystkich tabel z włączonymi wektorami usuwania. Zobacz Poziomy izolacji i konflikty zapisu w usłudze Azure Databricks.
W przypadku wszystkich tabel Apache Iceberg z włączonym klastrowaniem dynamicznym wymagane jest środowisko wykonawcze Databricks Runtime 16.4 LTS i nowsze.
Do czego służy klastrowanie płynne?
Databricks zaleca płynne klastrowanie dla wszystkich nowych tabel, w tym tabel przesyłania strumieniowego (TP) i zmaterializowanych widoków (MV). Poniżej przedstawiono przykłady scenariuszy, które korzystają z klastrowania:
- Tabele często filtrowane według kolumn o wysokiej kardynalności.
- Tabele ze znaczną niesymetrycznością w dystrybucji danych.
- Tabele, które szybko się rozrastają i wymagają prac konserwacyjnych oraz optymalizacji.
- Tabele wymagające współbieżnego zapisu.
- Tabele ze wzorcami dostępu, które zmieniają się w czasie.
- Tabele, w których typowy klucz partycji może prowadzić do zbyt wielu lub zbyt niewielu partycji.
Włącz klastrowanie liquid
Klastrowanie płynne można włączyć w istniejącej tabeli lub podczas tworzenia tabeli. Klastrowanie nie jest zgodne z partycjonowaniem lub ZORDER
, i wymaga użycia usługi Azure Databricks do zarządzania wszystkimi operacjami układu i optymalizacji dla danych w tabeli. Po włączeniu klastrowania płynnego uruchom OPTIMIZE
zadania tak jak zwykle, aby przyrostowo klastrować dane. Zobacz Jak wyzwalać klastrowanie.
Aby włączyć klastrowanie cieczy, dodaj kod CLUSTER BY
do instrukcji tworzenia tabeli, jak w poniższych przykładach:
Uwaga
W Databricks Runtime 14.2 lub nowszym można użyć interfejsów API DataFrame i API DeltaTable w języku Python lub Scala, aby umożliwić płynne grupowanie dla tabel Delta Lake.
SQL
-- Create an empty Delta table
CREATE TABLE table1(col0 INT, col1 string) CLUSTER BY (col0);
-- Using a CTAS statement
CREATE EXTERNAL TABLE table2 CLUSTER BY (col0) -- specify clustering after table name, not in subquery
LOCATION 'table_location'
AS SELECT * FROM table1;
-- Using a LIKE statement to copy configurations
CREATE TABLE table3 LIKE table1;
W przypadku Apache Iceberg, należy wyłączyć wektory usuwania i identyfikatory wierszy podczas włączania Liquid Clustering w zarządzanej tabeli Iceberg.
Python
# Create an empty Delta table
(DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0")
.execute())
# Using a CTAS statement
df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
# CTAS using DataFrameWriterV2
df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
Skala
// Create an empty Delta table
DeltaTable.create()
.tableName("table1")
.addColumn("col0", dataType = "INT")
.addColumn("col1", dataType = "STRING")
.clusterBy("col0")
.execute()
// Using a CTAS statement
val df = spark.read.table("table1")
df.write.clusterBy("col0").saveAsTable("table2")
// CTAS using DataFrameWriterV2
val df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()
W środowisku Databricks Runtime 16.0 lub nowszym można tworzyć tabele z włączonym klastrowaniem płynnym przy użyciu zapisów ze strukturą przesyłania strumieniowego, jak w następujących przykładach:
:::
SQL
CREATE TABLE table1 (
col0 STRING,
col1 DATE,
col2 BIGINT
)
CLUSTER BY (col0, col1)
TBLPROPERTIES (
'clusterByAuto' = 'true'
);
Python
(spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
)
Skala
spark.readStream.table("source_table")
.writeStream
.clusterBy("column_name")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
Ostrzeżenie
Tabele Delta utworzone z włączonym klastrowaniem płynnym mają wiele funkcji tabeli Delta włączonych podczas tworzenia i używają składnika zapisywania Delta w wersji 7 i czytnika w wersji 3. Możesz przestawić włączenie niektórych z tych funkcji. Zobacz Zastępowanie domyślnej funkcji włączania (opcjonalnie).
Nie można obniżyć wersji protokołu tabel, a tabele z włączonym klastrowaniem nie są czytelne dla klientów Delta Lake, którzy nie obsługują wszystkich funkcji protokołu czytnika tabeli Delta. Zobacz kompatybilność funkcji i protokoły Delta Lake.
Włącz klastrowanie liquid w istniejącej niepartycyjnej tabeli delty przy użyciu następującej składni:
-- Alter an existing table
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)
W przypadku platformy Apache Iceberg należy jawnie wyłączyć wektory usuwania i identyfikatory wierszy podczas włączania klastrowania płynnego w istniejącej zarządzanej tabeli Góry Lodowej.
Ważne
Domyślne zachowanie nie stosuje klastrowania do wcześniej zapisanych danych. Aby wymusić ponowne grupowanie dla wszystkich rekordów, należy użyć OPTIMIZE FULL
. Zobacz Wymuszanie ponownego klastrowania wszystkich rekordów.
Aby usunąć klucze klastrowania, użyj następującej składni:
ALTER TABLE table_name CLUSTER BY NONE;
automatyczne klastrowanie cieczy
W środowisku Databricks Runtime 15.4 LTS i nowszym można włączyć automatyczne klastrowanie płynne dla zarządzanych tabel Delta w Unity Catalog. Po włączeniu automatycznego klastrowania płynnego usługa Azure Databricks inteligentnie wybiera klucze klastrowania w celu zoptymalizowania wydajności zapytań. Umożliwiasz automatyczne klastrowanie cieczy przy użyciu klauzuli CLUSTER BY AUTO
.
Po włączeniu automatyczne wybieranie klucza i operacje klastrowania są uruchamiane asynchronicznie jako operacja konserwacji i wymagają włączenia optymalizacji predykcyjnej dla tabeli. Zobacz Optymalizację predykcyjną dla tabel zarządzanych w Unity Catalog.
Aby zidentyfikować klucze klastrowania, usługa Azure Databricks analizuje historyczne obciążenie zapytania tabeli i identyfikuje najlepsze kolumny kandydatów. Klucze klastrowania są zmieniane, gdy przewidywane oszczędności kosztów wynikające z ulepszeń pomijania danych przewyższają koszt klastrowania danych.
Jeśli sposób wykonywania zapytań dotyczących danych zmienia się w czasie lub wydajność zapytań wskazuje zmiany w dystrybucjach danych, automatyczne klastrowanie liquid wybiera nowe klucze w celu zoptymalizowania wydajności.
Jeśli klucz nie został wybrany przez automatyczne klastrowanie cieczy, przyczyną może być:
- Tabela jest zbyt mała, aby skorzystać z klastrowania płynnego.
- Tabela ma już dobry schemat klastrowania. Na przykład klucze są skuteczne po jednorazowym zastosowaniu, albo kolejność wstawiania danych jest już optymalna dla danego schematu zapytań, jak dane wstawiane w kolejności chronologicznej i zapytania oparte na znaczniku czasu.
- W tabeli brak częstych zapytań.
- Nie używasz środowiska Databricks Runtime 15.4 LTS lub nowszego.
Można zastosować automatyczne klastrowanie danych dla wszystkich tabel zarządzanych przez Unity Catalog, niezależnie od cech danych i zapytań. Te funkcje zapewniają inteligentną optymalizację układu danych na podstawie wzorców użycia danych, a heurystyka decyduje, czy wybór kluczy klastrowania jest opłacalny.
Uwaga
Można odczytywać lub zapisywać tabele z włączonym automatycznym klastrowaniem we wszystkich wersjach środowiska Databricks Runtime, które obsługują płynne klastrowanie (liquid clustering). Jednak wybór klucza inteligentnego zależy od metadanych wprowadzonych w środowisku Databricks Runtime 15.4 LTS. Użyj środowiska Databricks Runtime 15.4 LTS lub nowszego, aby zapewnić, że automatycznie wybrane klucze optymalizują działanie wszystkich obciążeń i że te obciążenia są uwzględniane przy wyborze nowych kluczy.
Włączanie lub wyłączanie automatycznego grupowania płynów
Aby włączyć lub wyłączyć automatyczne klastrowanie liquid w nowej lub istniejącej tabeli, użyj następującej składni:
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);
Uwaga
Jeśli uruchomisz CREATE OR REPLACE table_name
bez określenia CLUSTER BY AUTO
, a tabela już istnieje i ma włączone automatyczne klastrowanie dynamiczne, ustawienia AUTO
oraz kolumny klastrowania dla tabeli (jeśli zostały zastosowane) są zachowywane podczas zastępowania tabeli. Optymalizacja predykcyjna obsługuje również historyczne obciążenie zapytań dla tej tabeli w celu zidentyfikowania najlepszych kluczy klastrowania.
Python
df = spark.read.table("table1")
df.write
.format("delta")
.option(“clusterByAuto”, “true”)
.saveAsTable(...)
# To set clustering columns and auto, which serves as a way to give a hint
# for the initial selection.
df.write
.format("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option(“clusterByAuto”, “true”)
.saveAsTable(...)
# Using DataFrameWriterV2
df.writeTo(...).using("delta")
.option(“clusterByAuto”, “true”)
.create()
# To set clustering columns and auto, which serves as a way to give a hint
# for the initial selection.
df.writeTo(...).using("delta")
.clusterBy("clusteringColumn1", "clusteringColumn2")
.option(“clusterByAuto”, “true”)
.create()
# Similar syntax can also be used to set clusterByAuto for streaming tables.
spark.readStream.table("source_table")
.writeStream
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
# Or to specify a hint for the clustering columns by specifying both auto and columns together
spark.readStream.table("source_table")
.writeStream
.clusterBy("column1", "column2")
.option("clusterByAuto", "true")
.option("checkpointLocation", checkpointPath)
.toTable("target_table")
Uwaga
Interfejs API języka Python jest dostępny w środowisku Databricks Runtime 16.4 lub nowszym.
Gdy .clusterBy
jest używana razem z parametrem .option('clusterByAuto', 'true)
, wówczas:
- Jeśli ustawiamy automatyczne klastrowanie cieczy po raz pierwszy, zawsze uwzględni ręczne dane wejściowe i ustawi kolumny klastrowania w elemencie
.clusterBy
. - Jeśli jest to już tabela z automatycznym klastrowaniem liquid, podpowiedź z
.clusterBy
można zaakceptować jeden raz. Na przykład kolumny określone przez.clusterBy
są ustawiane tylko wtedy, gdy tabela nie ma już ustawionych kolumn klastrowania, przez użytkownika lub przez automatyczne klastrowanie płynne.
Język Python można używać tylko podczas tworzenia lub zastępowania tabeli. Użyj programu SQL, aby zmienić clusterByAuto
stan istniejącej tabeli.
Sprawdzanie, czy automatyczne klastrowanie jest włączone
Aby sprawdzić, czy tabela ma włączone automatyczne klastrowanie płynne, użyj polecenia DESCRIBE TABLE
lub SHOW TBLPROPERTIES
.
Jeśli włączono automatyczne klastrowanie cieczy, właściwość jest ustawiana na wartość clusterByAuto
. Właściwość clusteringColumns
pokazuje bieżące kolumny klastrowania, które zostały automatycznie lub ręcznie wybrane.
Ograniczenia
Automatyczne klastrowanie liquid nie jest dostępne dla platformy Apache Iceberg.
Zastąpij domyślne włączanie funkcji (opcjonalnie)
Można zastąpić domyślne zachowanie, które włącza funkcje tabeli delta podczas włączania klastrowania płynnego. Uniemożliwia to uaktualnianie protokołów czytników i składników zapisywania skojarzonych z tymi funkcjami tabeli. Aby wykonać następujące czynności, musisz mieć istniejącą tabelę:
Użyj
ALTER TABLE
do ustawienia właściwości tabeli, która wyłącza jedną lub więcej funkcji. Aby na przykład wyłączyć wektory usuwania, uruchom następujące polecenie:ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);
Włącz klastrowanie płynów w tabeli, uruchamiając następujące polecenie:
ALTER TABLE <table_name> CLUSTER BY (<clustering_columns>)
Poniższa tabela zawiera informacje na temat funkcji delta, które można zastąpić i jak włączenie ma wpływ na zgodność z wersjami środowiska Databricks Runtime.
Funkcja delta | Zgodność środowiska uruchomieniowego | Właściwość do nadpisywania włączenia | Wpływ wyłączenia na klastrowanie cieczy |
---|---|---|---|
Wektory usuwania | Operacje odczytu i zapisu wymagają środowiska Databricks Runtime 12.2 LTS lub nowszego. | 'delta.enableDeletionVectors' = false |
Współbieżność na poziomie wiersza jest wyłączona, co zwiększa prawdopodobieństwo konfliktu transakcji i operacji klastrowania. Zobacz Konflikty zapisu ze współbieżnością na poziomie wiersza.DELETE , MERGE i UPDATE polecenia mogą działać wolniej. |
Śledzenie wierszy | Zapisy wymagają środowiska Databricks Runtime 13.3 LTS lub nowszego. Można odczytywać z dowolnej wersji środowiska Databricks Runtime. | 'delta.enableRowTracking' = false |
Współbieżność na poziomie wiersza jest wyłączona, co zwiększa prawdopodobieństwo konfliktu transakcji i operacji klastrowania. Zobacz Konflikty zapisu ze współbieżnością na poziomie wiersza. |
Punkty kontrolne w wersji 2 | Operacje odczytu i zapisu wymagają środowiska Databricks Runtime 13.3 LTS lub nowszego. | 'delta.checkpointPolicy' = 'classic' |
Brak wpływu na zachowanie klastrowania cieczy. |
Wybieranie kluczy klastrowania
Databricks zaleca automatyczne klastrowanie cieczy dla obsługiwanych tabel. Zobacz Automatyczne klastrowanie cieczy.
Usługa Databricks zaleca wybranie kluczy klastrowania na podstawie kolumn najczęściej używanych w filtrach zapytań. Klucze klastrowania można zdefiniować w dowolnej kolejności. Jeśli dwie kolumny są wysoce skorelowane, wystarczy dołączyć tylko jedną z nich jako klucz klastrowania.
Można określić maksymalnie cztery klucze klastrowania. W przypadku mniejszych tabel (poniżej 10 TB) użycie większej liczby kluczy klastrowania (na przykład czterech) może obniżyć wydajność podczas filtrowania w jednej kolumnie w porównaniu z użyciem mniejszej liczby kluczy klastrowania (na przykład dwóch). Jednak wraz ze wzrostem rozmiaru tabeli różnica w wydajności przy użyciu większej liczby kluczy klastrowania dla zapytań jednokolumnach staje się nieznaczna.
Można określić tylko kolumny, które mają statystyki zebrane jako klucze klastrowania. Domyślnie pierwsze 32 kolumny w tabeli Delta mają zebrane statystyki. Sprawdź Określanie kolumn statystyk Delta.
Klaster obsługuje następujące typy danych dla kluczy klastrowania:
- Data
- Sygnatura czasowa
- TimestampNTZ (wymaga środowiska Databricks Runtime 14.3 LTS lub nowszego)
- Sznurek
- Liczba całkowita
- Długi
- Krótkie
- Liczba zmiennoprzecinkowa
- Podwójny
- Dziesiętne
- Bajt
Jeśli konwertujesz istniejącą tabelę, rozważ następujące zalecenia:
Bieżąca technika optymalizacji danych | Zalecenie dotyczące kluczy klastrowania |
---|---|
Partycjonowanie w stylu Hive | Użyj kolumn partycji jako kluczy klastrowania. |
Indeksowanie porządku Z |
ZORDER BY Użyj kolumn jako kluczy klastrowania. |
Partycjonowanie w stylu Hive i porządek Z | Użyj zarówno kolumn partycji, jak i ZORDER BY kolumn jako kluczy klastrowania. |
Wygenerowane kolumny w celu zmniejszenia kardynalności (na przykład daty dla znacznika czasu) | Użyj oryginalnej kolumny jako klucza klastrowania i nie twórz wygenerowanej kolumny. |
Zapisywanie danych w tabeli klastrowanej
Aby zapisać w klastrowanej tabeli Delta, należy użyć klienta programu Delta, który obsługuje wszystkie funkcje tabel protokołu zapisu Delta używane przez klastrowanie dynamiczne. Aby zapisać w klastrowanej tabeli Iceberg, możesz użyć interfejsu API Unity Catalog's Iceberg REST Catalog. W usłudze Azure Databricks musisz użyć środowiska Databricks Runtime 13.3 LTS lub nowszego.
Operacje zgrupowane wokół zapisu obejmują:
- Operacje
INSERT INTO
-
CTAS
iRTAS
instrukcje -
COPY INTO
z formatu Parquet spark.write.mode("append")
Zorganizowane przesyłanie strumieniowe nigdy nie wyzwala klastrowania podczas zapisu. Obowiązują dodatkowe ograniczenia. Zobacz Ograniczenia.
Klastrowanie podczas zapisu jest wyzwalane tylko wtedy, gdy dane w transakcji spełniają próg rozmiaru. Te progi różnią się w zależności od liczby kolumn do klastrowania i są niższe dla tabel zarządzanych przez Unity Catalog niż dla innych tabel Delta.
Liczba kolumn klastrowania | Próg rozmiaru tabel zarządzanych w Katalogu Unity | Rozmiar progu dla innych tabel delty |
---|---|---|
1 | 64 MB | 256 MB |
2 | 256 MB | 1 GB |
3 | 512 MB | 2 GB |
4 | 1 GB | 4 GB |
Ponieważ nie wszystkie operacje stosują "liquid clustering", Databricks zaleca częste uruchamianie OPTIMIZE
, aby zapewnić efektywne klastrowanie wszystkich danych.
Jak wyzwalać klastrowanie
** Optymalizacja predykcyjna automatycznie uruchamia OPTIMIZE polecenia dla włączonych tabel. Zobacz Optymalizację predykcyjną dla tabel zarządzanych w Unity Catalog. Korzystając z optymalizacji predykcyjnej, usługa Databricks zaleca wyłączenie zaplanowanych OPTIMIZE zadań.
Aby uruchomić klastrowanie, należy użyć Databricks Runtime w wersji 13.3 LTS lub nowszej. Użyj polecenia OPTIMIZE
na swojej tabeli.
OPTIMIZE table_name;
Klastrowanie typu "liquid" jest przyrostowe, co oznacza, że dane są ponownie zapisywane tylko w razie potrzeby, aby uwzględnić te dane, które wymagają klastrowania. Pliki danych z kluczami klastrowania, które nie są zgodne z danymi, które mają być klastrowane, nie są przepisane.
Jeśli nie używasz optymalizacji predykcyjnej, usługa Databricks zaleca zaplanowanie regularnych OPTIMIZE
zadań w celu klastrowania danych. Dla tabel, które często są aktualizowane lub podlegają operacjom wstawiania, Databricks zaleca, aby zaplanować OPTIMIZE
zadanie co jedną lub dwie godziny. Ponieważ klastrowanie płynów jest przyrostowe, większość zadań dla tabel klastrowanych jest uruchamiana szybko.
Wymuszenie ponownego klastrowania wszystkich rekordów
W środowisku Databricks Runtime 16.0 lub nowszym można wymusić ponowne rejestrowanie wszystkich rekordów w tabeli przy użyciu następującej składni:
OPTIMIZE table_name FULL;
Ważne
Uruchamianie OPTIMIZE FULL
ponownie grupuje wszystkie istniejące dane zgodnie z potrzebami. W przypadku dużych tabel, które nie zostały wcześniej klastrowane na określonych kluczach, ta operacja może potrwać kilka godzin.
Uruchom OPTIMIZE FULL
po włączeniu klastrowania po raz pierwszy lub zmianie kluczy klastrowania. Jeśli wcześniej uruchomiono OPTIMIZE FULL
i nie nastąpiła zmiana kluczy klastrowania, OPTIMIZE FULL
działa tak samo jak OPTIMIZE
. W tym scenariuszu OPTIMIZE
zastosowano podejście przyrostowe i przepisuje tylko te pliki, które nie zostały jeszcze skompaktowane. Zawsze używaj OPTIMIZE FULL
, aby upewnić się, że układ danych odzwierciedla bieżące klucze klastrowania.
Odczytywanie danych z tabeli klastrowanej
Dane można odczytywać w klastrowanej tabeli delty przy użyciu dowolnego klienta usługi Delta Lake obsługującego odczytywanie wektorów usuwania. Za pomocą interfejsu API katalogu REST Iceberg można odczytywać dane w klastrowanej tabeli Iceberg.
SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";
Zmienianie kluczy klastrowania
Klucze klastrowania dla tabeli można zmienić w dowolnym momencie, uruchamiając ALTER TABLE
polecenie, jak w poniższym przykładzie:
ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);
W przypadku zmiany kluczy klastrowania, kolejne operacje OPTIMIZE
i zapisu używają nowego podejścia do klastrowania, ale istniejące dane nie zostaną przepisane.
Klastrowanie można również wyłączyć, ustawiając klucze na NONE
, jak w poniższym przykładzie:
ALTER TABLE table_name CLUSTER BY NONE;
Ustawienie kluczy klastra na NONE
nie powoduje ponownego zapisywania danych, które zostały już klastrowane, ale uniemożliwia wykonywanie przyszłych OPTIMIZE
operacji przy użyciu kluczy klastrowania.
Używanie klastrowania cieczy z zewnętrznego silnika
Można włączyć liquid clustering w zarządzanych tabelach Iceberg z zewnętrznych silników Iceberg. Aby włączyć klastrowanie cieczy, określ kolumny partycji przy tworzeniu tabeli. Katalog Unity interpretuje partycje jako klucze klastrowania. Na przykład uruchom poniższe polecenie w OSS Spark.
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;
Można wyłączyć klasteryzację cieczy.
ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;
Klucze podziału można zmienić za pomocą ewolucji partycji Iceberg.
ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;
Jeśli określisz partycję z przekształceniem bucket, Unity Catalog usunie wyrażenie i użyje kolumny jako klucza klastrowania.
CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));
Zobacz, jak tabela jest klastrowana
Możesz użyć DESCRIBE
poleceń, aby wyświetlić klucze klastrowania dla tabeli, jak w następujących przykładach:
DESCRIBE TABLE table_name;
DESCRIBE DETAIL table_name;
Zgodność tabel z klastrowaniem płynnym
Tabele utworzone przy użyciu płynnego klastrowania w środowisku Databricks Runtime 14.1 lub nowszym używają domyślnie punktów kontrolnych w wersji 2. Tabele można odczytywać i zapisywać przy użyciu punktów kontrolnych w wersji 2 w środowisku Databricks Runtime 13.3 LTS lub nowszym.
Możesz wyłączyć punkty kontrolne v2 i obniżyć wersję protokołów tabel, aby odczytywać tabele z klastrowaniem płynnym w środowisku Databricks Runtime 12.2 LTS i nowszym. Zobacz Upuszczanie funkcji tabeli Delta Lake i obniżanie poziomu protokołu tabeli.
Ograniczenia
Istnieją następujące ograniczenia:
- W środowisku Databricks Runtime 15.1 lub starszym klastrowanie przy zapisie nie obsługuje zapytań źródłowych obejmujących filtry, sprzężenia ani agregacje.
- Obciążenia związane z przesyłaniem strumieniowym ze strukturą nie obsługują klastrowania podczas zapisu.
- W Databricks Runtime 15.4 LTS i w niższych wersjach nie można utworzyć tabeli z włączonym klastrowaniem płynnym przy użyciu Structured Streaming. Można używać strumieniowego przetwarzania danych ze strukturą do zapisywania danych w istniejącej tabeli z włączonym klastrowaniem płynnym.
- Współbieżność na poziomie wiersza nie jest obsługiwana w zarządzanych tabelach Iceberg, ponieważ wektory usuwania i śledzenie wierszy nie są obsługiwane w tabelach Iceberg.