Condividi tramite


Parte esterna tables

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Unity Catalog e il metastore Hive predefinito di Azure Databricks usano percorsi di default per le tablesgestite. Unity Catalog introduce diversi nuovi oggetti proteggibili per grant privilegi sui dati nell'archiviazione di oggetti cloud.

  • credenziali di archiviazione

    Oggetto Unity Catalog usato per astrarre a lungo termine il credentials dall'archiviazione nel cloud providers.

  • posizione esterna

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

  • esterni table

    Un'unità Unity creata in una posizione esternagestita da Unity .

Elementi esterni table

Un table esterno è un table 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'utilizzo di tables esterni nasconde il percorso di archiviazione, la posizione esterna e le credenziali di archiviazione per gli utenti a cui viene concesso l'accesso alla tableesterna.

Avviso

Se un schema (database) è registrato nel metastore Hive a livello di area di lavoro, eliminare quel schema utilizzando l'opzione CASCADE provoca l'eliminazione ricorsiva di tutti i file in quella posizione schema, indipendentemente dal tipo di table (gestito o esterno).

Se il schema viene registrato in un metastore Catalog di Unity, i file gestiti per Unity Catalogtables vengono eliminati in modo ricorsivo. Tuttavia, i file per tables esterni 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 un schema in un metastore Hive in una posizione con dati esistenti. Non si dovrebbe creare nuovi tables esterni in una posizione gestita dagli schemi del metastore Hive o contenere tablesgestito da Unity Catalog.

Rappresentazione grafica delle relazioni

Il diagramma seguente descrive la relazione tra:

  • Archiviazione credentials
  • posizioni esterne
  • tables esterno
  • 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