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.
Azure Databricks supporta i comandi DDL standard SQL per eliminare e sostituire le tabelle registrate con Unity Catalog o con il metastore Hive. Il comportamento di eliminazione e sostituzione varia in base al tipo di tabella e al metastore. Scegliere il comando corretto per evitare la perdita di dati o gli errori di operazioni simultanee.
Quando eliminare una tabella
Databricks consiglia di usare DROP TABLE per rimuovere una tabella dal metastore quando si vuole eliminare definitivamente la tabella e non si intende creare una nuova tabella nella stessa posizione. Per esempio:
DROP TABLE table_name
DROP TABLE ha comportamenti diversi a seconda del tipo di tabella e se la tabella è registrata nel catalogo Unity o nel metastore Hive legacy.
| Tipo di tabella | Metastore | Behavior |
|---|---|---|
| Managed | Catalogo Unity | La tabella viene rimossa dal metastore e i dati sottostanti sono contrassegnati per l'eliminazione. È possibile UNDROP una tabella gestita entro il periodo di recupero configurato (impostazione predefinita: 7 giorni). Vedere Eliminare una tabella gestita. |
| Managed | Hive | La tabella viene rimossa dal metastore e i dati sottostanti vengono eliminati. |
| External | Catalogo Unity | La tabella viene rimossa dal metastore, ma i dati sottostanti rimangono. I privilegi di accesso URI sono ora regolati dalla posizione esterna che contiene i dati. |
| External | Hive | La tabella viene rimossa dal metastore, ma i dati sottostanti rimangono. Tutti i privilegi di accesso URI sono invariati. |
Il catalogo Unity gestisce una cronologia delle tabelle usando un ID tabella interno. Per tutti i tipi di tabella, al termine dell'operazione di eliminazione, il nome della tabella registrato in precedenza non ha più un collegamento attivo ai dati e alla cronologia delle tabelle dal metastore.
Vedete DROP TABLE.
Note
Databricks non consiglia di eliminare e ricreare una tabella usando lo stesso nome per le pipeline o i sistemi di produzione perché ciò può comportare risultati imprevisti per le operazioni simultanee. Vedere Sostituire i dati con operazioni simultanee.
Quando sostituire una tabella
Databricks consiglia di usare istruzioni CREATE OR REPLACE TABLE per i casi d'uso in cui desideri sovrascrivere completamente la tabella di destinazione con nuovi dati. Ad esempio, per sovrascrivere una tabella con tutti i dati di una directory Parquet, eseguire il comando seguente:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
CREATE OR REPLACE TABLE ha la stessa semantica indipendentemente dal tipo di tabella o dal metastore in uso. Di seguito sono riportati i vantaggi importanti di CREATE OR REPLACE TABLE:
- Il contenuto del sommario viene sostituito, ma l'identità della tabella viene mantenuta.
- La cronologia delle tabelle viene mantenuta ed è possibile ripristinare la tabella in una versione precedente con il
RESTOREcomando . - L'operazione è una singola transazione, quindi non esiste mai un'ora in cui la tabella non esiste.
- Le query simultanee che leggono dalla tabella possono continuare senza interruzioni. Poiché la versione precedente e successiva alla sostituzione esiste ancora nella cronologia delle tabelle, le query simultanee possono fare riferimento a una delle due versioni della tabella in base alle esigenze.
- Se la tabella originale include le maschere di colonna, tali maschere vengono mantenute per tutte le colonne ancora presenti nella nuova tabella. In questo modo si garantisce che i criteri di accesso ai dati vengano mantenuti.
Visualizza CREATE TABLE [UTILIZZANDO].
Sostituire i dati con operazioni simultanee
Quando si desidera eseguire una sostituzione completa dei dati in una tabella che potrebbe essere usata nelle operazioni simultanee, è necessario usare CREATE OR REPLACE TABLE.
Non dovresti usare il seguente anti-pattern:
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;
Per tutti i tipi di tabella, indipendentemente dal fatto che si usi o meno Unity Catalog, l'uso di questo modello può generare un errore, eliminare record o risultati danneggiati.
Databricks consiglia invece di usare CREATE OR REPLACE TABLEsempre , come nell'esempio seguente:
CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`
Poiché la sostituzione atomica preserva la cronologia della tabella, le transazioni concorrenti possono convalidare la versione della tabella di origine a cui fanno riferimento e non andare a buon fine oppure essere riconciliate senza comportamenti imprevisti.