Condividi tramite


Supporto dell'archiviazione in Azure Databricks

Importante

Questa funzionalità è disponibile in anteprima pubblica per Databricks Runtime 13.3 LTS e versioni successive.

Il supporto per l'archiviazione in Azure Databricks consente di usare i criteri del ciclo di vita basati sul cloud nell'archiviazione di oggetti cloud contenente tabelle Delta. L'abilitazione del supporto dell'archiviazione in una tabella Delta Lake indica in modo efficace ad Azure Databricks di ignorare i file precedenti al periodo specificato nella tabella.

Requisiti

Azure Databricks supporta l'archiviazione solo per l'archivio di Azure. Vedere la documentazione di Azure sull'ottimizzazione dei costi con la gestione del ciclo di vita.

Perché abilitare il supporto per l'archiviazione?

Il supporto dell'archiviazione consente solo query a cui è possibile rispondere correttamente senza toccare i file archiviati. Queste query includono quelle seguenti:

  • Metadati della query solamente.
  • Disporre di filtri che non richiedono l'analisi di file archiviati.

Tutte le query che richiedono dati nei file archiviati hanno esito negativo.

Importante

Azure Databricks non restituisce mai i risultati per le query che richiedono file archiviati per restituire il risultato corretto.

L'abilitazione del supporto per l'archiviazione per una tabella in Azure Databricks non crea o modifica i criteri del ciclo di vita definiti per l'archiviazione di oggetti cloud. Vedere Modificare la regola di transizione della gestione del ciclo di vita.

Senza supporto per l'archiviazione, le operazioni sulle tabelle Delta potrebbero interrompersi perché i file di dati o i file di log delle transazioni sono stati spostati in posizioni archiviate e non sono disponibili quando viene eseguita una query. Il supporto dell'archiviazione introduce ottimizzazioni per evitare di eseguire query sui dati archiviati quando possibile. Aggiunge inoltre una nuova sintassi per identificare i file che devono essere ripristinati dall'archiviazione per completare le query.

Query ottimizzate per i dati archiviati

Il supporto per l'archiviazione in Azure Databricks ottimizza le query seguenti sulle tabelle Delta.

Quesito Nuovo comportamento
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Ignorare automaticamente i file archiviati e restituire i risultati dai dati in un livello di archiviazione non archiviato.
Comandi di manutenzione delta Lake: OPTIMIZE, ZORDER, ANALYZE, PURGE Ignorare automaticamente i file archiviati ed eseguire la manutenzione nel resto della tabella.
Istruzioni DDL e DML che sovrascrivono dati o eliminano dati, inclusi i seguenti: REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, DROP TABLE Segnare come eliminate le voci del log delle transazioni per i file di dati archiviati di destinazione.
FSCK REPAIR TABLE Ignorare i file archiviati e verificare solo la presenza di file che non hanno raggiunto i criteri relativi al ciclo di vita.

Messaggi di guasti iniziali ed errori

Per le query che devono analizzare i file archiviati per generare risultati corretti, la configurazione del supporto di archiviazione per Delta Lake garantisce quanto segue:

  • Le query hanno esito negativo in anticipo se tentano di accedere ai file archiviati, riducendo il calcolo sprecato e consentendo agli utenti di adattare e ripetere rapidamente le query.
  • I messaggi di errore informano gli utenti che una query non è riuscita perché la query ha tentato di accedere ai file archiviati.

Gli utenti possono generare un report di file che devono essere ripristinati usando la sintassi SHOW ARCHIVED FILES. Consulta Mostra file archiviati.

Importante

Se viene visualizzato l'errore Not enough files to satisfy LIMIT, la tabella non dispone di righe di dati sufficienti in file non crittografati per soddisfare il numero di record specificato da LIMIT. Abbassare la LIMIT clausola per trovare righe non archiviate sufficienti per soddisfare il requisito specificato LIMIT. Vedere Limitazioni.

Abilitare il supporto per l'archiviazione

È possibile abilitare il supporto dell'archiviazione per le tabelle Delta specificando manualmente l'intervallo di archiviazione configurato nei criteri di gestione del ciclo di vita del cloud sottostanti.

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

L'impostazione di un'ora timeUntilArchived indica ad Azure Databricks di ignorare i file nella tabella Delta Lake precedenti al periodo di tempo specificato. Questa impostazione è separata dai criteri del ciclo di vita dell'account cloud. Le modifiche apportate a una non influiscono sull'altra. Se si aggiornano i criteri relativi al ciclo di vita nell'account cloud, è necessario aggiornare anche l'impostazione di archiviazione nella tabella Delta Lake. Vedere Modificare la regola di transizione della gestione del ciclo di vita.

Se si abilita questa impostazione senza criteri del ciclo di vita impostati per l'archiviazione di oggetti cloud, il supporto per l'archiviazione consente alle query di avere esito positivo e i risultati includono i dati dei file contrassegnati per l'archiviazione. Consulta Come Azure Databricks gestisce i campioni per i dati ripristinati?

Avviso

I criteri del ciclo di vita del cloud non devono archiviare il log delle transazioni Delta (_delta_log/ directory). Vedere Limitazioni.

Importante

Il supporto dell'archiviazione si basa interamente su ambienti di calcolo di Azure Databricks compatibili e funziona solo per le tabelle Delta. La configurazione del supporto per l'archiviazione non modifica il comportamento, la compatibilità o il supporto nei client OSS Delta Lake o in Databricks Runtime 12.2 LTS e versioni successive.

Mostra file archiviati

Per identificare i file che devono essere ripristinati per completare una determinata query, usare SHOW ARCHIVED FILES.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Questa operazione restituisce gli URI per i file archiviati come dataframe Spark. Ripristina i file archiviati necessari seguendo le istruzioni documentate del provider di archiviazione oggetti. Per informazioni su come Azure Databricks verifica i dati ripristinati, vedere Come Azure Databricks esegue il campionamento per i dati ripristinati?

Nota

Durante questa operazione, Delta Lake ha accesso solo alle statistiche dei dati contenute nel log delle transazioni. Per impostazione predefinita, queste sono le statistiche seguenti raccolte sulle prime 32 colonne della tabella:

  • Valori minimi
  • Valori massimi
  • Conteggi nulli
  • Numero totale di registrazioni

I file restituiti includono tutti i file archiviati che devono essere letti per determinare se i record che soddisfano un predicato esistono nel file. Databricks consiglia di fornire predicati che includono campi in cui i dati sono partizionati, ordinati z o in cluster per ridurre il numero di file che devono essere ripristinati.

Aggiornare o eliminare i dati archiviati

L'operazione ha esito negativo se si esegue un'operazione MERGE, UPDATEo DELETE che influisce sui dati nei file archiviati. È necessario ripristinare i dati in un livello di archiviazione che supporta il recupero rapido per eseguire queste operazioni. Usare SHOW ARCHIVED FILES per determinare i file da ripristinare.

Come viene illustrato l'esempio di Azure Databricks per i dati ripristinati?

Quando Azure Databricks prepara un'analisi su una tabella con supporto di archiviazione abilitato, esegue l'esempio di file precedenti al periodo di conservazione specificato richiesto dalla query per determinare se i file sono stati ripristinati o meno. Se i risultati indicano che i file campionati presunti essere archiviati sono stati ripristinati, Azure Databricks presuppone che tutti i file per la query siano stati ripristinati e che i processi di query siano stati ripristinati. I risultati includono i dati dei file contrassegnati per l'archiviazione.

Il campionamento potrebbe non essere applicabile a tutte le query, vedere Limitazioni.

Limiti

Esistono le limitazioni seguenti:

  • Il supporto per l'archiviazione si applica solo ai file di dati. Se i file nel log delle transazioni Delta (_delta_log/ directory) vengono spostati in un livello di archiviazione archiviato, la tabella diventa completamente inaccessibile e tutte le query sulla tabella hanno esito negativo. È necessario configurare i criteri relativi al ciclo di vita del cloud in modo che il _delta_log/ percorso non sia incluso nell'archivio. Vedere esempi di configurazioni del ciclo di vita S3.
  • Non esiste alcun supporto per i criteri di gestione del ciclo di vita che non sono basati sul tempo di creazione dei file. Sono inclusi i criteri basati sul tempo di accesso e i criteri basati su tag.
  • Non è possibile utilizzare DROP COLUMN in una tabella con file archiviati.
  • REORG TABLE APPLY PURGE esegue un tentativo di lavoro ottimale, ma funziona solo sui file vettoriali di eliminazione e sui file di dati a cui si fa riferimento che non vengono archiviati. PURGE non può eliminare i file vettoriali di eliminazione archiviati.
  • L'estensione della regola di transizione della gestione del ciclo di vita comporta un comportamento imprevisto. Vedere Estendere la regola di transizione della gestione del ciclo di vita.
  • LIMIT Le query sulle tabelle con supporto di archiviazione abilitato non attivano il campionamento per i dati ripristinati. Se i dati di una tabella vengono ripristinati, la maggior parte delle query ha esito positivo durante l'esecuzione di query sui dati ripristinati, ma una LIMIT query restituisce un DELTA_ARCHIVED_FILES_IN_LIMIT errore. Vedere Come viene illustrato l'esempio di Azure Databricks per i dati ripristinati?

Modificare la regola di transizione della gestione del ciclo di vita

Se si modifica l'intervallo di tempo per la regola di transizione della gestione del ciclo di vita del cloud, è necessario aggiornare la proprietà delta.timeUntilArchived allo stesso intervallo.

Se l'intervallo di tempo prima dell'archiviazione viene abbreviato (meno tempo dalla creazione di file), il supporto dell'archiviazione per la tabella Delta continua a funzionare normalmente dopo l'aggiornamento della proprietà della tabella.

Estendere la regola di transizione della gestione del ciclo di vita

Se l'intervallo di tempo prima dell'archiviazione viene esteso (per aggiungere più tempo prima dell'attivazione dell'archiviazione), l'aggiornamento della proprietà delta.timeUntilArchived al nuovo valore può causare errori. I provider di servizi cloud non ripristinano automaticamente i file dall'archiviazione archiviata quando vengono modificati i criteri di conservazione dei dati. Ciò significa che i file precedentemente idonei per l'archiviazione, ma ora non considerati idonei per l'archiviazione, sono ancora archiviati.

Importante

Per evitare errori, non impostare mai la proprietà delta.timeUntilArchived su un valore maggiore dell'età effettiva dei dati archiviati più di recente.

Si consideri uno scenario in cui l'intervallo di tempo per l'archiviazione viene modificato da 60 giorni a 90 giorni:

  1. Tutti i record compresi tra 60 e 90 giorni vengono archiviati quando cambiano i criteri.
  2. Per 30 giorni, non vengono archiviati nuovi file (i file non archiviati più vecchi hanno 60 giorni quando si estende la politica).
  3. Dopo 30 giorni, i criteri relativi al ciclo di vita descrivono correttamente tutti i dati archiviati.

L'impostazione delta.timeUntilArchived tiene traccia dell'intervallo di tempo impostato rispetto all'ora di creazione del file registrata dal log delle transazioni Delta. Non ha una conoscenza esplicita dei criteri sottostanti. Durante il periodo di ritardo tra la soglia di archiviazione precedente e la nuova soglia di archiviazione, è possibile adottare uno degli approcci seguenti per evitare di eseguire query sui file archiviati:

  1. È possibile lasciare l'impostazione delta.timeUntilArchived con la soglia precedente fino a quando non è trascorso un tempo sufficiente per l'archiviazione di tutti i file.
    • Seguendo l'esempio precedente, ogni giorno per i primi 30 giorni, un altro giorno di dati verrebbe considerato archiviato da Azure Databricks, ma deve comunque essere archiviato dal provider di servizi cloud. Ciò non comporta un errore, ma ignora alcuni file di dati su cui è possibile eseguire query.
    • Dopo 30 giorni, aggiornare il delta.timeUntilArchived in 90 days.
  2. È possibile aggiornare l'impostazione delta.timeUntilArchived ogni giorno per allinearla all'intervallo corrente durante la fase di ritardo.
    • Mentre la politica cloud è impostata su 90 giorni, l’età effettiva dei dati archiviati cambia in tempo reale. Ad esempio, dopo 7 giorni, l'impostazione delta.timeUntilArchived su 67 days riflette in modo accurato l'età di tutti i file di dati archiviati.
    • Questo approccio è necessario solo se è necessario accedere a tutti i dati nei livelli ad accesso frequente.

Nota

L'aggiornamento del valore per delta.timeUntilArchived non modifica i dati archiviati. Cambia solo i dati considerati da Azure Databricks come se fossero archiviati.