Tabelle esterne

Si applica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Il catalogo unity e il metastore Hive di Azure Databricks incorporato usano percorsi predefiniti per le tabelle gestite. Unity Catalog introduce diversi nuovi oggetti a protezione diretta per concedere privilegi ai dati nell'archiviazione di oggetti cloud.

Tabella esterna

Una tabella esterna è una tabella che fa riferimento a un percorso di archiviazione esterno tramite una LOCATION clausola .

Il percorso di archiviazione deve essere contenuto in una posizione esterna esistente a cui è stato concesso l'accesso.

In alternativa, è possibile fare riferimento a una credenziale di archiviazione a cui è stato concesso l'accesso.

L'uso di tabelle esterne astrae il percorso di archiviazione, la posizione esterna e le credenziali di archiviazione per gli utenti a cui viene concesso l'accesso alla tabella esterna.

Avviso

Se uno schema (database) viene registrato nel metastore Hive a livello di area di lavoro, l'eliminazione dello schema tramite l'opzione determina l'eliminazione CASCADE ricorsiva di tutti i file nel percorso dello schema, indipendentemente dal tipo di tabella (gestito o esterno).

Se lo schema viene registrato in un metastore del catalogo Unity, i file per le tabelle gestite di Unity Catalog vengono eliminati in modo ricorsivo. Tuttavia, i file per le tabelle esterne non vengono eliminati. È necessario gestire questi file usando direttamente il provider di archiviazione cloud.

Pertanto, per evitare perdite accidentali di dati, è consigliabile non registrare mai uno schema in un metastore Hive in una posizione con dati esistenti. Né è consigliabile creare nuove tabelle esterne in una posizione gestita dagli schemi del metastore Hive o contenere tabelle gestite dal catalogo Unity.

Rappresentazione grafica delle relazioni

Il diagramma seguente descrive la relazione tra:

  • credenziali di archiviazione
  • posizioni esterne
  • tabelle esterne
  • percorsi di archiviazione
  • Entità IAM
  • Account del servizio di Azure

External location ER diagram

Esempi

-- `finance` can create an external table over specific object within the `finance_loc` location
> CREATE TABLE sec_filings LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings';

-- Create or replace an external table from a query
> CREATE OR REPLACE TABLE sec_filings
  LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings'
  AS (SELECT * FROM current_filings);

-- Cannot list files under an external table without permissions on it
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings`
  Error
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log`
  Error

-- Grant access to sec_filings to all employees
> GRANT SELECT ON TABLE sec_filings TO employee;

-- Any member of the `employee` group can securely read sec_filings
> SELECT count(1) FROM sec_filings;
 20

-- Any member of the `employee` group can list files under the sec_filings table
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings`
  _delta_log
> LIST `abfss://container@storageaccount.dfs.core.windows.net/depts/finance/sec_filings/_delta_log`
  00000.json