Condividi tramite


Usare il clustering liquido per le tabelle

Il clustering liquido è una tecnica di ottimizzazione del layout dei dati che sostituisce il partizionamento delle tabelle e ZORDER. Semplifica la gestione delle tabelle e ottimizza le prestazioni delle query organizzando automaticamente i dati in base alle chiavi di clustering.

A differenza del partizionamento tradizionale, è possibile ridefinire le chiavi di clustering senza riscrivere i dati esistenti. Ciò consente al layout dei dati di evolversi insieme alle mutevoli esigenze analitiche. Il clustering liquido si applica sia alle tabelle di streaming che alle viste materializzate.

Important

Il clustering liquido è disponibile a livello generale per le tabelle Delta Lake e in anteprima pubblica per le tabelle Apache Iceberg gestite. Per le tabelle Delta Lake, il supporto GA è disponibile con Databricks Runtime 15.2 e versioni successive. Databricks consiglia di usare la versione più recente di Databricks Runtime per ottenere prestazioni ottimali. Per le tabelle Apache Iceberg, è necessario Databricks Runtime 16.4 LTS e versioni successive.

Quando usare il clustering liquido

Databricks consiglia il clustering liquido per tutte le nuove tabelle, incluse le tabelle di streaming e le viste materializzate. Gli scenari seguenti traggono vantaggio in particolare dal clustering:

  • Tabelle spesso filtrate in base a colonne con cardinalità elevata.
  • Tabelle con asimmetria nella distribuzione dei dati.
  • Tabelle che aumentano rapidamente e richiedono operazioni di manutenzione e ottimizzazione.
  • Tabelle con requisiti di scrittura simultanei.
  • Tabelle con modelli di accesso che cambiano nel tempo.
  • Tabelle in cui una chiave di partizione tipica potrebbe lasciare la tabella con troppe o troppo poche partizioni.

Abilitare il clustering liquido

È possibile abilitare il clustering liquido in una tabella non partizionata esistente o durante la creazione di tabelle. Il clustering non è compatibile con il partizionamento o ZORDER. Databricks consiglia di consentire alla piattaforma di gestire tutte le operazioni di layout e ottimizzazione per i dati nella tabella. Dopo aver abilitato il clustering liquido, eseguire i OPTIMIZE lavori per raggruppare i dati in modo incrementale. Vedere Come attivare il clustering.

Creare tabelle con clustering

Per abilitare il clustering liquido, aggiungere la CLUSTER BY frase a un'istruzione di creazione della tabella, come negli esempi seguenti. In Databricks Runtime 14.2 e versioni successive è possibile usare le API DataFrame e l'API DeltaTable in Python o Scala per abilitare il clustering liquido per le tabelle Delta Lake.

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 (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 (DBR 14.2+)
val df = spark.read.table("table1")
df.writeTo("table1").using("delta").clusterBy("col0").create()

Important

Quando si usano le API DataFrame per impostare le chiavi di clustering, è possibile specificare solo le colonne di clustering durante la creazione della tabella o quando si usa la modalità overwrite, ad esempio con operazioni CREATE OR REPLACE TABLE. Non è possibile modificare le chiavi di clustering quando si usa la append modalità .

Per modificare le chiavi di clustering in una tabella esistente durante l'aggiunta dei dati, usare i comandi SQL ALTER TABLE per modificare la configurazione del clustering separatamente dalle operazioni di scrittura dei dati.

In Databricks Runtime 16.0 e versioni successive è possibile creare tabelle con clustering liquido abilitato usando le scritture Structured Streaming. Databricks consiglia di usare Databricks Runtime 16.4 e versioni successive per ottenere prestazioni ottimali, come negli esempi seguenti:

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

Le tabelle Delta con clustering liquido abilitato utilizzano Delta Writer versione 7 e Delta Reader versione 3. I client Delta che non supportano questi protocolli non possono leggere queste tabelle. Non è possibile effettuare il downgrade delle versioni del protocollo di tabella. Vedere Compatibilità e protocolli delle funzionalità delta Lake.

Per sostituire l'abilitazione predefinita delle funzionalità (come i vettori di eliminazione), consultare Sostituire l'abilitazione predefinita delle funzionalità (opzionale).

Abilitare nelle tabelle esistenti

Abilitare il clustering liquido in una tabella Delta non partizionata esistente usando la sintassi seguente:

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

Per Apache Iceberg, è necessario disabilitare esplicitamente i vettori di eliminazione e gli ID di riga quando si abilita il clustering liquido su una tabella Iceberg gestita esistente.

Note

Il comportamento predefinito non applica il clustering ai dati scritti in precedenza. Per forzare il clustering per tutti i record, è necessario usare OPTIMIZE FULL. Vedere Forzare il clustering per tutti i record.

Rimuovere le chiavi di clustering

Per rimuovere le chiavi di clustering, usare la sintassi seguente:

ALTER TABLE table_name CLUSTER BY NONE;

Scegliere le chiavi di clustering

Suggerimento

Databricks consiglia di usare il clustering liquido automatico per le tabelle supportate, che seleziona in modo intelligente le chiavi di clustering in base ai modelli di query. Vedere Clustering liquido automatico.

Linee guida per la selezione delle chiavi

Quando si specificano manualmente le chiavi di clustering, scegliere le colonne in base alle colonne usate più di frequente nei filtri di query. È possibile definire le chiavi di clustering in qualsiasi ordine. Se due colonne sono altamente correlate, è sufficiente includerne una come chiave di clustering.

È possibile specificare fino a quattro chiavi di clustering. Per le tabelle più piccole (inferiori a 10 TB), l'uso di più chiavi di clustering può ridurre le prestazioni quando si filtra una singola colonna. Ad esempio, il filtro con quattro chiavi comporta prestazioni peggiori rispetto al filtro con due chiavi. Tuttavia, man mano che le dimensioni della tabella aumentano, questa differenza di prestazioni diventa trascurabile per le query a colonna singola.

Le chiavi di clustering devono essere colonne con statistiche raccolte. Per impostazione predefinita, vengono raccolte statistiche per le prime 32 colonne di una tabella Delta. Vedere Specificare le colonne delle statistiche Delta.

Tipi di dati supportati

Il clustering supporta questi tipi di dati per le chiavi di clustering:

  • Date
  • Timestamp
  • TimestampNTZ (Databricks Runtime 14.3 LTS e versioni successive)
  • String
  • Intero, Lungo, Corto, Byte
  • Float, Double, Decimal

Migrazione dal partizionamento o dall'ordine Z

Se si sta convertendo una tabella esistente, prendere in considerazione le raccomandazioni seguenti:

Tecnica di ottimizzazione dei dati corrente Raccomandazione per le chiavi di clustering
Partizionamento in stile Hive Usare le colonne di partizione come chiavi di clustering.
Indicizzazione dell'ordine Z Usare le colonne ZORDER BY come chiavi di clustering.
Partizionamento in stile Hive e ordine Z Usare sia le colonne di partizione che le colonne ZORDER BY come chiavi di clustering.
Colonne generate per ridurre la cardinalità (ad esempio, data per un timestamp) Usare la colonna originale come chiave di clustering e non creare una colonna generata.

Clustering automatico del liquido

In Databricks Runtime 15.4 LTS e versioni successive è possibile abilitare il clustering liquido automatico per le tabelle Delta gestite da Unity Catalog. Il clustering liquido automatico consente ad Azure Databricks di scegliere in modo intelligente le chiavi di clustering per ottimizzare le prestazioni delle query usando la CLUSTER BY AUTO clausola .

Funzionamento del clustering liquido automatico

Il clustering liquido automatico offre un'ottimizzazione intelligente in base ai modelli di utilizzo:

  • Richiede ottimizzazione predittiva: la selezione automatica delle chiavi e le operazioni di clustering vengono eseguite in modo asincrono come operazione di manutenzione. Vedere Ottimizzazione predittiva per le tabelle gestite di Unity Catalog.
  • Analizza il carico di lavoro delle query: Azure Databricks analizza il carico di lavoro di query cronologico della tabella e identifica le colonne candidate migliori per il clustering.
  • Adatta alle modifiche: se i modelli di query o le distribuzioni dei dati cambiano nel tempo, il clustering liquido automatico seleziona nuove chiavi per ottimizzare le prestazioni.
  • Selezione consapevole dei costi: Azure Databricks modifica le chiavi di clustering solo quando i risparmi stimati sui costi derivanti dai miglioramenti nello skipping dei dati superano i costi del clustering dei dati.

Il clustering liquido automatico potrebbe non selezionare le chiavi per i motivi seguenti:

  • La tabella è troppo piccola per trarre vantaggio dal clustering liquido.
  • La tabella ha già uno schema di clustering efficace, sia da precedenti chiavi manuali che dall'ordine di inserimento naturale che corrisponde ai modelli di query.
  • La tabella non dispone di query frequenti.
  • Non stai utilizzando Databricks Runtime 15.4 LTS o versione successiva.

È possibile applicare il clustering liquido automatico per tutte le tabelle gestite di Unity Catalog, indipendentemente dai dati e dalle caratteristiche delle query. L'euristica decide se è vantaggioso selezionare le chiavi di clustering.

Compatibilità delle versioni DBR

È possibile leggere o scrivere tabelle con clustering automatico abilitato da tutte le versioni di Databricks Runtime che supportano il clustering liquido. Tuttavia, la selezione intelligente della chiave si basa sui metadati introdotti in Databricks Runtime 15.4 LTS.

Usare Databricks Runtime 15.4 LTS o versione successiva per assicurarsi che le chiavi selezionate automaticamente traggano vantaggio da tutti i carichi di lavoro e che questi carichi di lavoro vengano considerati quando si selezionano nuove chiavi.

Abilitare o disabilitare il raggruppamento automatico del liquido

Per abilitare o disabilitare il clustering liquido automatico in una tabella nuova o esistente, usare la sintassi seguente:

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

Se si esegue CREATE OR REPLACE table_name senza specificare CLUSTER BY AUTO e la tabella esiste già e il clustering liquido automatico è abilitato, l'impostazione AUTO è disabilitata e le colonne di clustering non vengono mantenute. Per mantenere il clustering liquido automatico e le colonne di clustering selezionate in precedenza, includere CLUSTER BY AUTO nell'istruzione replace. Se mantenuta, l'ottimizzazione predittiva gestisce il carico di lavoro delle query cronologiche per la tabella per identificare le chiavi di clustering migliori.

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

L'API Python è disponibile in Databricks Runtime 16.4 e versioni successive. Quando si usa .clusterBy insieme a .option('clusterByAuto', 'true), il comportamento è il seguente:

  • Se viene impostato il raggruppamento automatico dei liquidi per la prima volta, viene sempre rispettato l'input manuale e vengono impostate le colonne di clustering in .clusterBy.
  • Se si tratta già di una tabella con clustering liquido automatico, è possibile accettare un suggerimento usando .clusterBy una sola volta. Ad esempio, le colonne specificate da .clusterBy vengono impostate solo se la tabella non ha già impostato colonne di clustering.

È possibile usare Python solo quando si crea o si sostituisce una tabella. Usare SQL per modificare lo clusterByAuto stato di una tabella esistente.

Important

Quando si usano le API DataFrame, l'opzione clusterByAuto può essere impostata solo quando si usa la modalità overwrite. Non è possibile impostare clusterByAuto quando si utilizza la modalità append. Questa restrizione equivale a quando si impostano manualmente le colonne di clustering. Le impostazioni di clustering possono essere configurate solo durante la creazione di tabelle o le operazioni di sostituzione tramite overwrite la modalità .

Come soluzione alternativa, se si vuole modificare lo stato in una tabella esistente durante l'aggiunta clusterByAuto dei dati, usare i comandi SQL ALTER TABLE per modificare la configurazione del clustering separatamente dalle operazioni di scrittura dei dati.

Controllare se il clustering automatico è abilitato

Per verificare se per una tabella è abilitato il clustering liquido automatico, usare DESCRIBE TABLE o SHOW TBLPROPERTIES.

Se il clustering liquido automatico è abilitato, la clusterByAuto proprietà viene impostata su true. La clusteringColumns proprietà mostra le colonne di clustering correnti selezionate automaticamente o manualmente.

Limitations

Il clustering liquido automatico non è disponibile per Apache Iceberg.

Scrivere dati in una tabella cluster

Per scrivere in una tabella Delta in cluster, è necessario usare un client di scrittura Delta che supporta tutte le funzionalità della tabella del protocollo di scrittura Delta usate dal clustering liquido. Per scrivere in una tabella iceberg in cluster, è possibile usare l'API del catalogo REST Iceberg di Unity Catalog. In Azure Databricks è necessario usare Databricks Runtime 13.3 LTS e versioni successive.

Operazioni che supportano il clustering in scrittura

Le operazioni che si raggruppano durante la scrittura includono le seguenti:

  • INSERT INTO Operazioni
  • CTASistruzioni e RTAS
  • COPY INTO dal formato Parquet
  • spark.write.mode("append")

Soglie di dimensioni per il clustering

Il clustering in fase di scrittura viene attivato solo quando i dati nella transazione soddisfano una soglia di dimensioni. Queste soglie variano in base al numero di colonne di clustering e sono inferiori per le tabelle gestite di Unity Catalog rispetto ad altre tabelle Delta.

Numero di colonne di clustering Dimensioni di soglia per le tabelle gestite del catalogo Unity Dimensioni di soglia per altre tabelle Delta
1 64 MB 256 MB
2 256 MB 1 GB
3 512 MB 2GB
4 1 GB 4 GB

Poiché non tutte le operazioni applicano clustering liquido, Databricks consiglia l'esecuzione OPTIMIZE frequente per garantire che tutti i dati siano raggruppati in modo efficiente.

Carichi di lavoro di streaming

I carichi di lavoro Structured Streaming supportano il clustering in scrittura quando si imposta la configurazione spark.databricks.delta.liquid.eagerClustering.streaming.enabled di Spark su true. Il clustering per questi carichi di lavoro viene attivato solo se almeno uno degli ultimi cinque aggiornamenti di streaming supera una soglia di dimensioni rispetto alla tabella precedente.

Come attivare il clustering

L'ottimizzazione predittiva esegue automaticamente comandi OPTIMIZE per le tabelle abilitate. Vedere Ottimizzazione predittiva per le tabelle gestite di Unity Catalog. Quando si usa l'ottimizzazione predittiva, Databricks consiglia di disabilitare tutti i processi pianificati OPTIMIZE .

Per attivare il clustering, è necessario usare Databricks Runtime 13.3 LTS o versione successiva. Databricks consiglia Databricks Runtime 17.2 e versioni successive per ottenere prestazioni più veloci OPTIMIZE su tabelle di grandi dimensioni. Usare il OPTIMIZE comando nella tabella:

OPTIMIZE table_name;

Il clustering liquido è incrementale, vale a dire che OPTIMIZE riscrive solo i dati in base alle esigenze di clustering. OPTIMIZE non riscrive i file di dati con chiavi di clustering che non corrispondono ai dati oggetto di clustering.

Se non si utilizza l'ottimizzazione predittiva, Databricks consiglia di pianificare regolarmente OPTIMIZE processi per raggruppare i dati. Per le tabelle che riscontrano molti aggiornamenti o inserimenti, Databricks consiglia di pianificare un'attività OPTIMIZE ogni una o due ore. Poiché il raggruppamento liquido è incrementale, la maggior parte dei processi OPTIMIZE per le tabelle in cluster viene eseguita rapidamente.

Forzare il reclustering per tutti i record

In Databricks Runtime 16.0 e versioni successive è possibile forzare il clustering di tutti i record in una tabella con la sintassi seguente:

OPTIMIZE table_name FULL;

Important

Eseguendo OPTIMIZE FULL, tutti i dati esistenti vengono riorganizzati secondo necessità. Per le tabelle di grandi dimensioni che in precedenza non sono state raggruppate nelle chiavi specificate, questa operazione potrebbe richiedere ore.

Eseguire il comando OPTIMIZE FULL quando si abilita il clustering per la prima volta o si modificano le chiavi di clustering. Se in precedenza è stata eseguita OPTIMIZE FULL e non sono state apportate modifiche alle chiavi di clustering, OPTIMIZE FULL viene eseguito come OPTIMIZE. In questo scenario usa OPTIMIZE un approccio incrementale e riscrive solo i file che non sono stati compattati in precedenza. Usare sempre OPTIMIZE FULL per garantire che il layout dei dati rifletta le chiavi di clustering correnti.

Leggere i dati da una tabella clusterizzata

È possibile leggere i dati in una tabella Delta cluster usando qualsiasi client Delta Lake che supporta la lettura dei vettori di eliminazione. Usando l'API del catalogo REST di Iceberg, è possibile leggere i dati in una tabella Iceberg cluster. Il clustering liquido migliora le prestazioni delle query tramite l'omissione automatica dei dati quando si filtrano le chiavi di clustering.

SELECT * FROM table_name WHERE cluster_key_column_name = "some_value";

Gestire le chiavi di clustering

Vedere come viene raggruppata una tabella

È possibile usare i comandi DESCRIBE per visualizzare le chiavi di clustering per una tabella, come negli esempi seguenti:

DESCRIBE TABLE table_name;

DESCRIBE DETAIL table_name;

Modificare le chiavi di clustering

È possibile modificare le chiavi di clustering per una tabella in qualsiasi momento eseguendo un comando ALTER TABLE, come nell'esempio seguente:

ALTER TABLE table_name CLUSTER BY (new_column1, new_column2);

Quando si modificano le chiavi di clustering, le operazioni successive OPTIMIZE e di scrittura usano il nuovo approccio di clustering, ma i dati esistenti non vengono riscritti.

È anche possibile disattivare il clustering impostando le chiavi su NONE, come nell'esempio seguente:

ALTER TABLE table_name CLUSTER BY NONE;

L'impostazione delle chiavi del cluster su NONE non riscrive i dati in cluster, ma impedisce alle operazioni future OPTIMIZE di usare chiavi di clustering.

Usare il clustering liquido da un motore esterno

È possibile abilitare il clustering liquido su tabelle Iceberg gestite da motori Iceberg esterni. Per abilitare il clustering liquido, specificare le colonne di partizione durante la creazione di una tabella. Il catalogo unity interpreta le partizioni come chiavi di clustering. Ad esempio, eseguire il comando seguente in OSS Spark:

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

È possibile disabilitare il clustering liquido:

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

È possibile modificare le chiavi di clustering usando l'evoluzione della partizione Iceberg:

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

Se si specifica una partizione usando una trasformazione bucket, Unity Catalog elimina l'espressione e usa la colonna come chiave di clustering:

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

Compatibilità per le tabelle con clustering fluido

Il clustering liquido usa funzionalità di tabella Delta che richiedono versioni specifiche di Databricks Runtime per la lettura e la scrittura. Le tabelle create con il clustering liquido nel Databricks Runtime 14.1 e nelle versioni successive utilizzano checkpoint v2 per impostazione predefinita. È possibile leggere e scrivere tabelle con i checkpoint v2 nel Databricks Runtime 13.3 LTS e versioni successive.

È possibile disabilitare i checkpoint v2 e effettuare il downgrade dei protocolli di tabella per leggere le tabelle con clustering liquido in Databricks Runtime 12.2 LTS e versioni successive. Vedere Eliminare una funzionalità di tabella Delta Lake e effettuare il downgrade del protocollo di tabella.

Eseguire l'override dell'abilitazione delle funzionalità predefinite (facoltativo)

È possibile modificare l'abilitazione delle funzionalità predefinite della tabella Delta durante il processo di abilitazione del clustering liquido. Ciò impedisce l'aggiornamento dei protocolli lettore e scrittore associati a tali funzionalità delle tabelle. Per completare la procedura seguente, è necessario disporre di una tabella esistente:

  1. Utilizzare ALTER TABLE per impostare la proprietà della tabella che disabilita una o più funzionalità. Ad esempio, per disabilitare i vettori di eliminazione, eseguire le operazioni seguenti:

    ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = false);
    
  2. Abilitare il clustering liquido nella tabella eseguendo quanto segue:

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

La tabella seguente fornisce informazioni sulle funzionalità Delta su cui è possibile eseguire l'override e in che modo l'abilitazione influisce sulla compatibilità con le versioni di Databricks Runtime.

Funzionalità Delta Compatibilità del runtime Proprietà per sovrascrivere l'abilitazione Impatto della disabilitazione di funzionalità sul clustering liquido
Vettori di cancellazione Le operazioni di lettura e scrittura richiedono Databricks Runtime 12.2 LTS e versioni successive. 'delta.enableDeletionVectors' = false La disabilitazione dei vettori di eliminazione disabilita la concorrenza a livello di riga, rendendo più probabili conflitti tra transazioni e operazioni di clustering. Vedere Conflitti di scrittura con concorrenza a livello di riga.
DELETEI comandi , MERGEe UPDATE potrebbero essere eseguiti più lentamente.
Monitoraggio delle righe Le operazioni di scrittura richiedono Databricks Runtime 13.3 LTS o versioni successive. Può essere letto da qualsiasi versione di Databricks Runtime. 'delta.enableRowTracking' = false La disabilitazione del rilevamento delle righe disabilita la concorrenza a livello di riga, rendendo più probabili conflitti tra transazioni e operazioni di clustering. Vedere Conflitti di scrittura con concorrenza a livello di riga.
Punti di Controllo V2 Le letture e le scritture sono richieste da Databricks Runtime 13.3 LTS e versioni successive. 'delta.checkpointPolicy' = 'classic' Nessun impatto sul comportamento del clustering dei liquidi.

Limitations

  • DBR 15.1 e versioni precedenti: il clustering in scrittura non supporta le query di origine che includono filtri, join o aggregazioni.
  • DBR 15.4 LTS e versioni precedenti: Non è possibile creare una tabella con clustering liquido abilitato usando una scrittura di Structured Streaming. È possibile usare Structured Streaming per scrivere dati in una tabella esistente con clustering liquido abilitato.
  • Apache Iceberg v2: la concorrenza a livello di riga non è supportata nelle tabelle Iceberg gestite con Apache Iceberg v2, perché i vettori di eliminazione e il rilevamento delle righe non sono supportati nelle tabelle Iceberg.