Delen via


Liquid clustering gebruiken voor tabellen

Liquid clustering is een optimalisatietechniek voor gegevensindeling die tabelpartitionering vervangt en ZORDER. Het vereenvoudigt tabelbeheer en optimaliseert queryprestaties door gegevens automatisch te ordenen op basis van clustersleutels.

In tegenstelling tot traditionele partitionering kunt u clustersleutels opnieuw definiëren zonder bestaande gegevens te herschrijven. Hierdoor kan uw gegevensindeling zich ontwikkelen naast veranderende analysebehoeften. Liquid clustering is van toepassing op zowel streamingtabellen als gerealiseerde weergaven.

Important

Liquid clustering is algemeen beschikbaar voor Delta Lake-tabellen en in openbare preview voor beheerde Apache Iceberg-tabellen. Voor Delta Lake-tabellen is GA-ondersteuning beschikbaar met Databricks Runtime 15.2 en hoger. Databricks raadt aan de nieuwste Databricks Runtime te gebruiken voor de beste prestaties. Voor Apache Iceberg-tabellen is Databricks Runtime 16.4 LTS en hoger vereist.

Wanneer moet u liquid clustering gebruiken

Databricks raadt vloeibare clustering aan voor alle nieuwe tabellen, waaronder streamingtabellen en gerealiseerde weergaven. De volgende scenario's profiteren met name van clustering:

  • Tabellen die vaak worden gefilterd op kolommen met hoge kardinaliteit.
  • Tabellen met scheefheid in de distributie van gegevens.
  • Tabellen die snel groeien en onderhoud en afstemming vereisen.
  • Tabellen met gelijktijdige schrijfvereisten.
  • Tabellen met toegangspatronen die na verloop van tijd veranderen.
  • Tabellen waarbij een typische partitiesleutel ertoe kan leiden dat de tabel te veel of te weinig partities bevat.

Liquid clustering inschakelen

U kunt vloeistofclustering inschakelen voor een bestaande niet-gepartitioneerde tabel of tijdens het maken van een tabel. Samenvoegen is niet compatibel met partitionering of ZORDER. Databricks raadt aan om het platform alle indelings- en optimalisatiebewerkingen voor gegevens in uw tabel te laten beheren. Nadat u liquid clustering hebt ingeschakeld, voert u OPTIMIZE taken uit om gegevens incrementeel te clusteren. Zie Hoe clustering te activeren.

Tabellen maken met clustering

Als u liquide clustering wilt inschakelen, voegt u CLUSTER BY toe aan een instructie voor het maken van tabellen, zoals in de voorbeelden hieronder. In Databricks Runtime 14.2 en hoger kunt u DataFrame-API's en DeltaTable-API's in Python of Scala gebruiken om liquide clustering in te schakelen voor Delta Lake-tabellen.

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

Wanneer u de DataFrame-API's gebruikt om clustersleutels in te stellen, kunt u alleen clustersleutels opgeven tijdens het maken van tabellen of wanneer u de overwrite-modus gebruikt (zoals bij CREATE OR REPLACE TABLE-bewerkingen). U kunt clustersleutels niet wijzigen wanneer u de modus gebruikt append .

Als u clustersleutels in een bestaande tabel wilt wijzigen tijdens het toevoegen van gegevens, gebruikt u SQL-opdrachten ALTER TABLE om de clusterconfiguratie afzonderlijk van uw schrijfbewerkingen voor gegevens te wijzigen.

In Databricks Runtime 16.0 en hoger kunt u tabellen maken waarvoor liquide clustering is ingeschakeld met behulp van Structured Streaming-schrijfbewerkingen. Databricks raadt aan om Databricks Runtime 16.4 en hoger te gebruiken voor de beste prestaties, zoals in de volgende voorbeelden:

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

Delta-tabellen waarvoor liquid clustering is ingeschakeld, gebruiken Delta Writer versie 7 en lezer versie 3. Delta-clients die deze protocollen niet ondersteunen, kunnen deze tabellen niet lezen. U kunt tabelprotocolversies niet downgraden. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.

Zie Standaardfunctie-inschakeling overschrijven (optioneel) als u de standaard mogelijkheid van functies zoals verwijderingsvectoren wilt overschrijven.

Inschakelen voor bestaande tabellen

Schakel liquid clustering in op een bestaande niet-gepartitioneerde Delta-tabel met behulp van de volgende syntaxis:

-- Alter an existing table
ALTER TABLE <table_name>
CLUSTER BY (<clustering_columns>)

Voor Apache Iceberg moet u verwijderingsvectoren en rij-id's expliciet uitschakelen bij het inschakelen van vloeistofclustering op een bestaande beheerde Iceberg-tabel.

Note

Het standaardgedrag past clustering niet toe op eerder geschreven gegevens. Om alle records opnieuw te clusteren, moet u OPTIMIZE FULLgebruiken. Zie Force herclustering voor alle records.

Clusteringsleutels verwijderen

Gebruik de volgende syntaxis om clustersleutels te verwijderen:

ALTER TABLE table_name CLUSTER BY NONE;

Clusteringsleutels kiezen

Aanbeveling

Databricks raadt aan om automatische liquide clustering te gebruiken voor ondersteunde tabellen, die op intelligente wijze clusteringsleutels selecteren op basis van uw querypatronen. Zie Automatische vloeistofclustering.

Richtlijnen voor sleutelselectie

Wanneer u handmatig clustersleutels opgeeft, kiest u kolommen op basis van de kolommen die het meest worden gebruikt in queryfilters. U kunt clusteringsleutels in elke volgorde definiëren. Als twee kolommen sterk zijn gecorreleerd, hoeft u slechts een van deze kolommen op te nemen als clusteringsleutel.

U kunt maximaal vier clustersleutels opgeven. Voor kleinere tabellen (minder dan 10 TB) kan het gebruik van meer clustersleutels de prestaties verminderen bij het filteren op één kolom. Filteren met vier sleutels presteert bijvoorbeeld slechter dan filteren met twee sleutels. Naarmate de tabelgrootte toeneemt, wordt dit prestatieverschil echter verwaarloosbaar voor query's met één kolom.

Clusteringsleutels moeten kolommen zijn waarop statistieken zijn verzameld. Standaard worden in de eerste 32 kolommen in een Delta-tabel statistieken verzameld. Zie Specificeren van statistiekkolommen.

Ondersteunde gegevenstypen

Clustering ondersteunt deze gegevenstypen voor clustersleutels:

  • Date
  • Timestamp
  • TimestampNTZ (Databricks Runtime 14.3 LTS en hoger)
  • String
  • Geheel getal, lang, kort, byte
  • Float, Double, Decimal

Migreren van partitioneren of Z-ordering

Als u een bestaande tabel converteert, kunt u de volgende aanbevelingen overwegen:

Huidige techniek voor gegevensoptimalisatie Aanbeveling voor clustersleutels
Partitionering in Hive-stijl Gebruik partitiekolommen als clustersleutels.
Indexering van Z-volgorde Gebruik de ZORDER BY kolommen als clustersleutels.
Hive-stijl partitioneren en Z-volgorde Gebruik zowel partitiekolommen als ZORDER BY kolommen als clustersleutels.
Gegenereerde kolommen om kardinaliteit te verminderen (bijvoorbeeld datum voor een tijdstempel) Gebruik de oorspronkelijke kolom als clustersleutel en maak geen gegenereerde kolom.

Automatische vloeistofclustering

In Databricks Runtime 15.4 LTS en hoger kunt u automatische liquide clustering inschakelen voor door Unity Catalog beheerde Delta-tabellen. Met automatische liquide clustering kan Azure Databricks intelligent clusteringsleutels kiezen om queryprestaties te optimaliseren met behulp van de CLUSTER BY AUTO component.

Hoe automatische vloeistofclustering werkt

Automatische vloeistofclustering biedt intelligente optimalisatie op basis van uw gebruikspatronen:

  • Vereist voorspellende optimalisatie: automatische sleutelselectie- en clusterbewerkingen worden asynchroon uitgevoerd als onderhoudsbewerking. Zie Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.
  • Analyseert de queryworkload: Azure Databricks analyseert de historische queryworkload van de tabel en identificeert de beste kandidaatkolommen voor clustering.
  • Past zich aan wijzigingen aan: als uw querypatronen of gegevensdistributies na verloop van tijd veranderen, selecteert automatische liquide clustering nieuwe sleutels om de prestaties te optimaliseren.
  • Kostenbewuste selectie: Azure Databricks wijzigt clusteringsleutels alleen wanneer de voorspelde kostenbesparingen door gegevens overslaan opwegen tegen de kosten voor gegevensclustering.

Automatische groepering van vloeistoffen kan om de volgende redenen niet in staat zijn om sleutels te selecteren:

  • De tabel is te klein om te profiteren van vloeistofclustering.
  • De tabel heeft al een effectief clusteringschema, ofwel uit eerdere handmatige sleutels of natuurlijke invoegvolgorde die overeenkomt met querypatronen.
  • De tabel heeft geen frequente zoekopdrachten.
  • U gebruikt Databricks Runtime 15.4 LTS of hoger niet.

U kunt automatische liquide clustering toepassen voor alle beheerde Unity Catalog-tabellen, ongeacht de gegevens- en querykenmerken. De heuristiek bepaalt of het voordelig is om clustersleutels te selecteren.

Compatibiliteit van Databricks Runtime-versies

U kunt tabellen lezen of schrijven waarvoor automatische clustering is ingeschakeld vanuit alle Databricks Runtime-versies die ondersteuning bieden voor liquide clustering. Intelligente sleutelselectie is echter afhankelijk van metagegevens die zijn geïntroduceerd in Databricks Runtime 15.4 LTS.

Gebruik Databricks Runtime 15.4 LTS of hoger om ervoor te zorgen dat automatisch geselecteerde sleutels profiteren van al uw workloads en dat deze workloads worden overwogen bij het selecteren van nieuwe sleutels.

Automatische vloeistofclustering in- of uitschakelen

Als u automatische vloeistofclustering wilt in- of uitschakelen voor een nieuwe of bestaande tabel, gebruikt u de volgende syntaxis:

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);

Als u uitvoert CREATE OR REPLACE table_name zonder op te CLUSTER BY AUTO geven en de tabel al bestaat en automatische vloeistofclustering is ingeschakeld, wordt de AUTO instelling uitgeschakeld en blijven clusterkolommen niet behouden. Als u automatische vloeistofclustering en eerder geselecteerde clusteringkolommen wilt behouden, moet u CLUSTER BY AUTO opnemen in de vervangingsinstructie. Wanneer deze behouden blijft, onderhoudt predictive optimization de historische queryworkload voor de tabel om de beste clusteringsleutels te identificeren.

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")

De Python-API is beschikbaar in Databricks Runtime 16.4 en hoger. Wanneer u .clusterBy samen gebruikt .option('clusterByAuto', 'true), is het gedrag als volgt:

  • Als hiermee automatische vloeistofclustering voor het eerst wordt ingesteld, wordt de handmatige invoer altijd gerespecteerd en worden de clusterkolommen in .clusterBy ingesteld.
  • Als dit al een tabel is met automatische vloeistofclustering, kan een hint .clusterBy eenmaal worden geaccepteerd. De kolommen die zijn opgegeven door .clusterBy , worden bijvoorbeeld alleen ingesteld als de tabel nog geen clusterkolommen heeft ingesteld.

U kunt Python alleen gebruiken wanneer u een tabel maakt of vervangt. Gebruik SQL om de clusterByAuto status van een bestaande tabel te wijzigen.

Important

Wanneer u DataFrame-API's gebruikt, kan de optie alleen worden ingesteld wanneer u de clusterByAuto modus gebruikt overwrite . U kunt clusterByAuto niet instellen wanneer u de modus append gebruikt. Deze beperking is dezelfde als bij het manueel instellen van clusteringkolommen, aangezien clustering-instellingen alleen kunnen worden geconfigureerd tijdens het maken of vervangen van tabellen met behulp van de overwrite modus.

Als tijdelijke oplossing, als u de clusterByAuto status van een bestaande tabel wilt wijzigen tijdens het toevoegen van gegevens, gebruikt u SQL-opdrachten ALTER TABLE om de clusterconfiguratie afzonderlijk van uw schrijfbewerkingen voor gegevens te wijzigen.

Controleren of automatische clustering ingeschakeld is

Om te controleren of een tabel automatische liquid clustering heeft ingeschakeld, gebruikt u DESCRIBE TABLE of SHOW TBLPROPERTIES.

Als automatische vloeistofclustering is ingeschakeld, wordt de clusterByAuto eigenschap ingesteld op true. De clusteringColumns eigenschap toont de huidige clusterkolommen die automatisch of handmatig zijn geselecteerd.

Limitations

Automatische vloeistofclustering is niet beschikbaar voor Apache Iceberg.

Gegevens schrijven naar een geclusterde tabel

Als u naar een geclusterde Delta-tabel wilt schrijven, moet u een Delta Writer-client gebruiken die alle functies van delta-schrijfprotocoltabellen ondersteunt die worden gebruikt door liquid clustering. Als u naar een geclusterde Iceberg-tabel wilt schrijven, kunt u de Iceberg REST Catalog-API van Unity Catalog gebruiken. In Azure Databricks moet u Databricks Runtime 13.3 LTS en hoger gebruiken.

Bewerkingen die clustering ondersteunen bij schrijven

Bewerkingen die clusteren bij het schrijven zijn onder andere:

  • INSERT INTO bewerkingen
  • CTAS en RTAS uitspraken
  • COPY INTO vanuit Parquet-formaat
  • spark.write.mode("append")

Drempelwaarden voor grootte voor clustering

Clustering bij schrijven wordt alleen geactiveerd wanneer de gegevens in de transactie voldoen aan een groottedrempel. Deze drempelwaarden variëren per aantal clusterkolommen en zijn lager voor beheerde Unity Catalog-tabellen dan andere Delta-tabellen.

Aantal clusterkolommen Drempelwaarde voor beheerde tabellen in Unity Catalog Drempelwaarde voor andere Delta-tabellen
1 64 MB 256 MB
2 256 MB 1 GB
3 512 MB 2 GB
4 1 GB 4 GB

Omdat niet alle bewerkingen liquid clustering toepassen, beveelt Databricks aan om OPTIMIZE regelmatig uit te voeren, zodat alle gegevens efficiënt worden geclusterd.

Streamingworkloads

Structured Streaming-workloads ondersteunen clustering bij schrijven wanneer u de Spark-configuratie instelt spark.databricks.delta.liquid.eagerClustering.streaming.enabled op true. Clustering voor deze workloads wordt alleen geactiveerd als ten minste één van de laatste vijf streaming-updates een drempelwaarde overschrijdt uit de bovenstaande tabel.

Hoe clustering te activeren

Voorspellende optimalisatie voert OPTIMIZE automatisch opdrachten uit voor ingeschakelde tabellen. Zie Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog. Wanneer u predictive optimization gebruikt, raadt Databricks aan om geplande OPTIMIZE taken uit te schakelen.

Als u clustering wilt activeren, moet u Databricks Runtime 13.3 LTS of hoger gebruiken. Databricks raadt Databricks Runtime 17.2 en hoger aan voor snellere OPTIMIZE prestaties voor grote tabellen. Gebruik de OPTIMIZE opdracht in de tabel:

OPTIMIZE table_name;

Liquid clustering is incrementeel, wat betekent dat OPTIMIZE alleen gegevens worden herschreven als dat nodig is om tegemoet te komen aan gegevens die clustering nodig hebben. OPTIMIZE herschrijft geen gegevensbestanden met clustersleutels die niet overeenkomen met de gegevens die worden geclusterd.

Als u geen voorspellende optimalisatie gebruikt, raadt Databricks aan om regelmatige OPTIMIZE taken te plannen voor het clusteren van gegevens. Voor tabellen met veel updates of invoegingen raadt Databricks aan om elke één of twee uur een OPTIMIZE taak te plannen. Omdat liquide clustering incrementeel is, worden de meeste OPTIMIZE taken voor geclusterde tabellen snel uitgevoerd.

Forceer herkoppeling voor alle records

In Databricks Runtime 16.0 en hoger kunt u het opnieuw clusteren van alle records in een tabel afdwingen met de volgende syntaxis:

OPTIMIZE table_name FULL;

Important

Als u OPTIMIZE FULL uitvoert, worden alle bestaande gegevens indien nodig opnieuw geclusterd. Voor grote tabellen die nog niet eerder zijn geclusterd op de opgegeven sleutels, kan deze bewerking uren duren.

Voer OPTIMIZE FULL uit wanneer u clustering voor de eerste keer inschakelt of clusteringsleutels wijzigt. Als u eerder OPTIMIZE FULL hebt uitgevoerd en er geen wijzigingen zijn aangebracht in clustersleutels, wordt OPTIMIZE FULL hetzelfde uitgevoerd als OPTIMIZE. In dit scenario OPTIMIZE wordt gebruikgemaakt van een incrementele benadering en worden alleen bestanden herschreven die nog niet eerder zijn gecomprimeerd. Gebruik altijd OPTIMIZE FULL om ervoor te zorgen dat de gegevensindeling de huidige clusteringsleutels weerspiegelt.

Gegevens uit een geclusterde tabel lezen

U kunt gegevens lezen in een geclusterde Delta-tabel met behulp van een Delta Lake-client die leesverwijderingsvectoren ondersteunt. Met behulp van de REST Catalog-API van Iceberg kunt u gegevens lezen in een geclusterde Iceberg-tabel. Liquid clustering verbetert de queryprestaties door het automatisch overslaan van gegevens bij het filteren op clustersleutels.

SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";

Clusteringsleutels beheren

Bekijk hoe een tabel is geclusterd

U kunt opdrachten gebruiken DESCRIBE om de clustersleutels voor een tabel weer te geven, zoals in de volgende voorbeelden:

DESCRIBE TABLE table_name;

DESCRIBE DETAIL table_name;

Wijzig clusteringssleutels

U kunt clustersleutels voor een tabel op elk gewenst moment wijzigen door een ALTER TABLE opdracht uit te voeren, zoals in het volgende voorbeeld:

ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);

Wanneer u clustersleutels wijzigt, gebruiken volgende OPTIMIZE bewerkingen en schrijfbewerkingen de nieuwe clusteringbenadering, maar worden bestaande gegevens niet opnieuw geschreven.

U kunt clustering ook uitschakelen door de sleutels in te stellen op NONE, zoals in het volgende voorbeeld:

ALTER TABLE table_name CLUSTER BY NONE;

Bij het instellen van clustersleutels op NONE worden geclusterde gegevens niet herschreven, maar wordt voorkomen dat toekomstige OPTIMIZE-bewerkingen clustersleutels gebruiken.

Gebruiken van liquid clustering vanuit een externe engine

U kunt vloeistofclustering inschakelen op beheerde Iceberg-tabellen van externe Iceberg-engines. Als u vloeistofclustering wilt inschakelen, geeft u partitiekolommen op bij het maken van een tabel. Unity Catalog interpreteert de partities als clusteringsleutels. Voer bijvoorbeeld de onderstaande opdracht uit in OSS Spark:

CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY c1;

U kunt liquid clustering uitschakelen:

ALTER TABLE main.schema.icebergTable DROP PARTITION FIELD c2;

U kunt clusteringsleutels wijzigen met behulp van de evolutie van iceberg-partities:

ALTER TABLE main.schema.icebergTable ADD PARTITION FIELD c2;

Als u een partitie opgeeft met behulp van een buckettransformatie, wordt de expressie in Unity Catalog verwijderd en wordt de kolom gebruikt als clusteringsleutel:

CREATE OR REPLACE TABLE main.schema.icebergTable
PARTITIONED BY (bucket(c1, 10));

Compatibiliteit voor tabellen met vloeibare clustering

Liquid-clustering maakt gebruik van Delta-tabelfuncties waarvoor specifieke Databricks Runtime-versies nodig zijn voor lezen en schrijven. Tabellen die zijn gemaakt met liquide clustering in Databricks Runtime 14.1 en hoger, gebruiken standaard v2-controlepunten. U kunt tabellen lezen en schrijven met v2-controlepunten in Databricks Runtime 13.3 LTS en hoger.

U kunt v2-controlepunten uitschakelen en tabelprotocollen downgraden om tabellen te lezen met liquide clustering in Databricks Runtime 12.2 LTS en hoger. Zie Een Delta Lake-tabelfunctie verwijderen en het tabelprotocol degraderen.

Standaardinstellingen voor inschakelen van functie overschrijven (optioneel)

U kunt het inschakelen van standaardfuncties voor Delta-tabellen overschrijven tijdens het inschakelen van liquide clustering. Hiermee voorkomt u dat de lezer- en schrijfprotocollen die aan deze tabelfuncties zijn gekoppeld, worden bijgewerkt. U moet een bestaande tabel hebben om de volgende stappen uit te voeren:

  1. Hiermee ALTER TABLE stelt u de tabeleigenschap in waarmee een of meer functies worden uitgeschakeld. Als u bijvoorbeeld verwijderingsvectoren wilt uitschakelen, voert u het volgende uit:

    ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);
    
  2. Schakel vloeistofclustering in de tabel in door het volgende uit te voeren:

    ALTER TABLE <table_name>
    CLUSTER BY (<clustering_columns>)
    

De volgende tabel bevat informatie over de Delta-functies die u kunt overschrijven en hoe het inschakelen van invloed is op de compatibiliteit met Databricks Runtime-versies.

Delta-functie Runtime-compatibiliteit Eigenschap om activering te overschrijven Impact van uitschakeling op vloeistofclustering
Verwijderingsvectoren Lees- en schrijfbewerkingen vereisen Databricks Runtime 12.2 LTS en hoger. 'delta.enableDeletionVectors' = false Als u verwijderingsvectoren uitschakelt, wordt gelijktijdigheid op rijniveau uitgeschakeld, waardoor transacties en clusterbewerkingen waarschijnlijker conflicteren. Zie Write conflicts with row-level concurrency.
DELETE, MERGEen UPDATE opdrachten kunnen langzamer worden uitgevoerd.
Rijvolgsysteem Schrijvers vereisen Databricks Runtime 13.3 LTS en hoger. Kan worden gelezen uit elke Databricks Runtime-versie. 'delta.enableRowTracking' = false Als u het bijhouden van rijen uitschakelt, wordt gelijktijdigheid op rijniveau uitgeschakeld, waardoor transacties en clusterbewerkingen waarschijnlijker conflicteren. Zie Write conflicts with row-level concurrency.
Controlepunten V2 Lees- en schrijfbewerkingen vereisen Databricks Runtime 13.3 LTS en hoger. 'delta.checkpointPolicy' = 'classic' Geen invloed op het gedrag van liquide clustering.

Limitations

  • Databricks Runtime 15.1 en lager: Clustering bij het schrijven ondersteunt geen query's van bronnen die filters, joins of aggregaties bevatten.
  • Databricks Runtime 15.4 LTS en hieronder: u kunt geen tabel maken waarvoor liquide clustering is ingeschakeld met behulp van een Structured Streaming-schrijfbewerking. U kunt Structured Streaming gebruiken om gegevens naar een bestaande tabel te schrijven waarvoor liquide clustering is ingeschakeld.
  • Apache Iceberg v2: gelijktijdigheid op rijniveau wordt niet ondersteund voor beheerde Iceberg-tabellen met Apache Iceberg v2, omdat verwijderingsvectoren en rijtracering niet worden ondersteund in Iceberg-tabellen.