Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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: BooleanImpostazione 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: IntImpostazione 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: StringImpostazione 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:
Vedere Configurare la conservazione dei dati per le query di spostamento cronologico. Tipo di dati: CalendarIntervalImpostazione 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: BooleanImpostazione 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: CalendarIntervalImpostazione 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: IntImpostazione 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: IntImpostazione 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: IntImpostazione predefinita: 2 |
randomizeFilePrefixes |
true per generare un prefisso casuale per un percorso di file anziché per le informazioni sulla partizione.Tipo di dati: BooleanImpostazione 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: StringImpostazione 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: StringImpostazione 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: BooleanImpostazione 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: StringImpostazione predefinita: (nessuna) |
checkpoint.writeStatsAsJson |
true per scrivere statistiche sui file nei checkpoint in formato JSON per la colonna stats.Tipo di dati: BooleanImpostazione 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: BooleanImpostazione predefinita: true |
checkpointPolicy |
classic per i checkpoint classici.
v2 per i checkpoint v2.Consultare Compatibilità per le tabelle con raggruppamento dinamico. Tipo di dati: StringImpostazione 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: DeltaColumnMappingModeImpostazione 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: BooleanImpostazione predefinita: false |
enableChangeDataFeed |
true per abilitare il feed di modifica dei dati.Vedere Abilitare il feed di dati delle modifiche. Tipo di dati: BooleanImpostazione predefinita: false |
enableTypeWidening |
true per abilitare l'ampliamento del tipo di dati.Vedere Estensione del tipo. Tipo di dati: BooleanImpostazione 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: StringImpostazione predefinita: WriteSerializable |
randomPrefixLength |
Numero di caratteri da generare per i prefissi casuali quando randomizeFilePrefixes è true.Tipo di dati: IntImpostazione 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: CalendarIntervalImpostazione 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: BooleanImpostazione predefinita: (nessuna) |