Condividi tramite


Informazioni di riferimento sulle proprietà della tabella

Delta Lake e Apache Iceberg usano le proprietà della tabella per controllare il comportamento e le funzionalità delle tabelle. Queste proprietà possono avere significati specifici e influire sui comportamenti quando sono impostati.

Nota

Tutte le operazioni che impostano o aggiornano le proprietà della tabella sono in conflitto con altre operazioni di scrittura simultanee, causandone l'esito negativo. Databricks consiglia di modificare una proprietà di tabella solo quando non sono presenti operazioni di scrittura simultanee nella tabella.

Modificare le proprietà della tabella

Per modificare le proprietà della tabella delle tabelle esistenti, utilizzare SET TBLPROPERTIES.

Formati Delta ed Iceberg

Le tabelle Delta Lake e Apache Iceberg condividono gli stessi nomi delle proprietà di tabella, ma richiedono prefissi diversi:

  • Tabelle Delta: usare il delta. prefisso
  • Tabelle Iceberg: utilizzare il iceberg. prefisso

Per esempio:

  • Per abilitare i vettori di eliminazione in una tabella Delta: delta.enableDeletionVectors
  • Per abilitare i vettori di eliminazione in una tabella Iceberg: iceberg.enableDeletionVectors

Proprietà della tabella e proprietà SparkSession

Ogni tabella ha proprietà di tabella specifiche che ne controllano il comportamento. Alcune configurazioni di SparkSession eseguono sempre l'override delle proprietà della tabella. Ad esempio, autoCompact.enabled e optimizeWrite.enabled abilitano a livello di SparkSession la compattazione automatica e le scritture ottimizzate. Databricks consiglia di usare configurazioni con ambito tabella per la maggior parte dei carichi di lavoro.

È possibile impostare i valori predefiniti per le nuove tabelle usando configurazioni SparkSession. Queste impostazioni predefinite si applicano solo alle nuove tabelle e non influiscono sulle proprietà della tabella esistenti. Le configurazioni sparkSession usano un prefisso diverso rispetto alle proprietà della tabella, come illustrato nella tabella seguente:

Proprietà della Tabella Configurazione di SparkSession
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

Ad esempio, per impostare la appendOnly = true proprietà per tutte le nuove tabelle create in una sessione, impostare quanto segue:

-- For Delta tables
SET spark.databricks.delta.properties.defaults.appendOnly = true

-- For Iceberg tables
SET spark.databricks.iceberg.properties.defaults.appendOnly = true

Proprietà della tabella

Le proprietà della tabella seguenti sono disponibili per le tabelle Delta Lake e Apache Iceberg. Usare il delta. prefisso per le tabelle Delta e iceberg. il prefisso per le tabelle Iceberg.

Proprietà Description
autoOptimize.optimizeWrite true per ottimizzare automaticamente il layout dei file per questa tabella durante le scritture.
Consulta Scritture ottimizzate.
Tipo di dati: Boolean
Impostazione predefinita: (nessuna)
dataSkippingNumIndexedCols Numero di colonne da raccogliere statistiche relative all'omissione dei dati. Il valore di -1 indica la raccolta di statistiche per tutte le colonne.
Vedere Salto dati.
Tipo di dati: Int
Impostazione predefinita: 32
dataSkippingStatsColumns Elenco delimitato da virgole di nomi di colonna in cui raccogliere statistiche per migliorare la funzionalità di salto dei dati. Questa proprietà ha la precedenza su dataSkippingNumIndexedCols.
Vedere Salto dati.
Tipo di dati: String
Impostazione predefinita: (nessuna)
deletedFileRetentionDuration Durata più breve per mantenere i file di dati eliminati logicamente prima di eliminarli fisicamente. In questo modo si evitano errori nei lettori non aggiornati dopo la compattazione o la sovrascrittura della partizione.
Impostare questo valore sufficientemente grande per assicurarsi che:
  • Il valore supera la durata più lunga possibile di un processo quando si esegue VACUUM con lettori o scrittori simultanei che accedono alla tabella.
  • Le query di streaming che leggono dalla tabella non vengono interrotte per più tempo rispetto a questo valore. In caso contrario, la query non può essere riavviata perché deve leggere i file precedenti.

Vedere Configurare la conservazione dei dati per le query di spostamento cronologico.
Tipo di dati: CalendarInterval
Impostazione predefinita: interval 1 week
enableDeletionVectors true per abilitare vettori di eliminazione e I/O predittivi per gli aggiornamenti.
Vedere Vettori di eliminazione in Databricks e Abilitare i vettori di eliminazione.
Tipo di dati: Boolean
Impostazione predefinita: dipende dalle impostazioni di amministrazione dell'area di lavoro e dalla versione di Databricks Runtime. Vedere Abilitare automaticamente i vettori di eliminazione.
logRetentionDuration Durata della conservazione della cronologia per una tabella. VACUUM le operazioni prevalgono su questa soglia di conservazione.
Databricks pulisce automaticamente le voci di log precedenti all'intervallo di conservazione ogni volta che viene scritto un checkpoint. Impostare questa proprietà su un valore elevato conserva molte voci di log. Ciò non influisce sulle prestazioni perché le operazioni sul log sono tempo costante. Le operazioni sulla cronologia sono parallele, ma diventano più costose man mano che aumentano le dimensioni del log.
Vedere Configurare la conservazione dei dati per le query di spostamento cronologico.
Tipo di dati: CalendarInterval
Impostazione predefinita: interval 30 days
minReaderVersion (solo Delta Lake) Versione minima richiesta del lettore di protocolli da leggere da questa tabella.
Databricks sconsiglia di configurare manualmente questa proprietà.
Vedere Compatibilità e protocolli delle funzionalità delta Lake.
Tipo di dati: Int
Impostazione predefinita: 1
minWriterVersion (solo Delta Lake) Versione minima richiesta dello scrittore del protocollo per scrivere in questa tabella.
Databricks sconsiglia di configurare manualmente questa proprietà.
Vedere Compatibilità e protocolli delle funzionalità delta Lake.
Tipo di dati: Int
Impostazione predefinita: 2
format-version (solo tabelle gestite da Apache Iceberg) Versione del formato tabella Iceberg.
Databricks sconsiglia di configurare manualmente questa proprietà.
Vedere Usare le funzionalità di Apache Iceberg v3.
Tipo di dati: Int
Impostazione predefinita: 2
randomizeFilePrefixes true per generare un prefisso casuale per un percorso di file anziché per le informazioni sulla partizione.
Tipo di dati: Boolean
Impostazione predefinita: false
targetFileSize Dimensioni del file di destinazione in byte o unità superiori per l'ottimizzazione dei file. Ad esempio, 104857600 (byte) o 100mb.
Vedere Controllare le dimensioni del file di dati.
Tipo di dati: String
Impostazione predefinita: (nessuna)
parquet.compression.codec Codec di compressione per una tabella.
Valori validi: ZSTD, SNAPPYGZIP, LZ4, , ( BROTLI supporto varia in base al formato)
Questa proprietà garantisce che tutte le scritture future nella tabella usino il codec scelto, ignorando il cluster o il valore predefinito della sessione (spark.sql.parquet.compression.codec). Tuttavia, le impostazioni di dataframe .write.option("compression", "...") occasionali hanno ancora la precedenza. Disponibile in Databricks Runtime 16.0 e versioni successive. Si noti che i file esistenti non vengono riscritti automaticamente. Per ricomprimere i dati esistenti con il formato scelto, usare OPTIMIZE table_name FULL.
Tipo di dati: String
Impostazione predefinita: ZSTD
appendOnly true per rendere la tabella di sola aggiunta. Le tabelle in cui si possono solo aggiungere dati non consentono l'eliminazione dei record esistenti o la modifica dei valori esistenti.
Tipo di dati: Boolean
Impostazione predefinita: false
autoOptimize.autoCompact Combina automaticamente file di piccole dimensioni all'interno di partizioni di tabella per ridurre piccoli problemi di file. Accetta auto (scelta consigliata), true, legacyo false.
Vedere Compattazione automatica.
Tipo di dati: String
Impostazione predefinita: (nessuna)
checkpoint.writeStatsAsJson true per scrivere statistiche sui file nei checkpoint in formato JSON per la colonna stats.
Tipo di dati: Boolean
Impostazione predefinita: false
checkpoint.writeStatsAsStruct true per registrare le statistiche dei file ai checkpoint nel formato struct per la colonna stats_parsed e scrivere i valori di partizione come struct per partitionValues_parsed.
Tipo di dati: Boolean
Impostazione predefinita: true
checkpointPolicy classic per i checkpoint classici. v2 per i checkpoint v2.
Consultare Compatibilità per le tabelle con raggruppamento dinamico.
Tipo di dati: String
Impostazione predefinita: classic
columnMapping.mode Abilita il mapping delle colonne per le colonne della tabella e le colonne Parquet corrispondenti che hanno nomi diversi.
Vedi Rinominare ed eliminare colonne con la mappatura delle colonne di Delta Lake.
Nota: l'abilitazione di columnMapping.mode abilita automaticamente randomizeFilePrefixes.
Tipo di dati: DeltaColumnMappingMode
Impostazione predefinita: none
compatibility.symlinkFormatManifest.enabled (solo Delta Lake) true per configurare la tabella Delta in modo che tutte le operazioni di scrittura nella tabella aggiornino automaticamente i manifesti.
Tipo di dati: Boolean
Impostazione predefinita: false
enableChangeDataFeed true per abilitare il feed di modifica dei dati.
Vedere Abilitare il feed di dati delle modifiche.
Tipo di dati: Boolean
Impostazione predefinita: false
enableTypeWidening true per abilitare l'ampliamento del tipo di dati.
Vedere Estensione del tipo.
Tipo di dati: Boolean
Impostazione predefinita: false
isolationLevel Il grado in cui la transazione deve essere isolata dalle modifiche apportate da transazioni concorrenti.
I valori validi sono Serializable e WriteSerializable.
Vedere Livelli di isolamento e conflitti di scrittura in Azure Databricks.
Tipo di dati: String
Impostazione predefinita: WriteSerializable
randomPrefixLength Numero di caratteri da generare per i prefissi casuali quando randomizeFilePrefixes è true.
Tipo di dati: Int
Impostazione predefinita: 2
setTransactionRetentionDuration Durata più breve entro la quale i nuovi snapshot mantengono gli identificatori di transazione (ad esempio, SetTransactions). I nuovi snapshot scadono e ignorano gli identificatori di transazione precedenti o uguali alla durata specificata da questa proprietà. L'identificatore SetTransaction viene usato quando si esegue operazioni di scrittura idempotenti. Per informazioni dettagliate, vedere scritture di tabelle Idempotenti in foreachBatch.
Tipo di dati: CalendarInterval
Impostazione predefinita: (nessuna)
tuneFileSizesForRewrites true per usare sempre dimensioni di file inferiori per tutte le operazioni di ottimizzazione del layout dei dati nella tabella.
false impedisce l'ottimizzazione per ridurre le dimensioni dei file e disabilita il rilevamento automatico.
Vedere Controllare le dimensioni del file di dati.
Tipo di dati: Boolean
Impostazione predefinita: (nessuna)