Condividi tramite


Tabelle esterne

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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 securizzabili per concedere privilegi ai dati nell'archiviazione di oggetti nel cloud.

  • credenziali di archiviazione

    Oggetto Unity Catalog usato per separare le credenziali a lungo termine dai provider di archiviazione cloud.

  • posizione esterna

    Oggetto di Unity Catalog utilizzato per associare un URI di archiviazione oggetti in cloud a una credenziale di archiviazione .

  • tabella esterna

    Una tabella del catalogo Unity creata in una posizione esterna gestita dal catalogo Unity .

Tabella esterna

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

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, eliminando lo schema usando l'opzione CASCADE, tutti i file in quello schema verranno eliminati in modo ricorsivo, indipendentemente dal tipo di tabella (gestito o esterno).

Se lo schema viene registrato in un metastore di Unity Catalog, i file delle tabelle gestite per Unity Catalog vengono eliminati in modo ricorsivo. Tuttavia, i file delle 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

Diagramma ER della posizione esterna

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