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 dell'archiviazione in Azure Databricks introduce una raccolta di funzionalità che consentono di usare i criteri del ciclo di vita basati sul cloud nell'archiviazione di oggetti cloud contenente tabelle Delta.

Importante

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:

  • Solo metadati di query.
  • 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.

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 di archiviazione per completare le query.

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. Per i risultati desiderati, i criteri relativi al ciclo di vita del cloud e l'impostazione delta.timeUntilArchived devono essere uguali.

Query ottimizzate per i dati archiviati

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

Query 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 Contrassegnare le voci del log delle transazioni per i file di dati archiviati di destinazione come eliminati.
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.

Vedere Limitazioni.

Messaggi di errore e errore iniziali

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. Vedere 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 crittografate sufficienti per soddisfare l'oggetto specificato LIMIT.

Abilitare il supporto per l'archiviazione

È possibile abilitare il supporto dell'archiviazione in Azure Databricks per le tabelle Delta specificando manualmente l'intervallo di archiviazione configurato nei criteri di gestione del ciclo di vita del cloud sottostanti, come nella sintassi di esempio seguente:

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

L'abilitazione del supporto di archiviazione indica in modo efficace ad Azure Databricks di ignorare i file precedenti al periodo specificato. Se si abilita questa impostazione senza aver impostato i criteri relativi al ciclo di vita per l'archiviazione di oggetti cloud, Azure Databricks ignora comunque i file in base a questa soglia specificata, ma non vengono archiviati dati.

Delta Lake non interagisce direttamente con i criteri di gestione del ciclo di vita configurati nell'account cloud. Se si aggiornano i criteri nell'account cloud, è necessario aggiornare i criteri sulla tabella Delta. Vedere Modificare la regola di transizione della gestione del ciclo di vita.

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, come nell'esempio seguente:

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 controlla la presenza di dati ripristinati, vedere Come viene illustrato l'esempio di Azure Databricks 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 null
  • Numero totale di record

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.

Limiti

Esistono le limitazioni seguenti:

  • 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.

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.

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 meno recenti sono 60 giorni prima dell'estensione dei criteri).
  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.