Tabelle esterne
Si applica a: Databricks SQL
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.
-
Oggetto Unity Catalog usato per separare le credenziali a lungo termine dai provider di archiviazione cloud.
-
Oggetto di Unity Catalog utilizzato per associare un URI di archiviazione oggetti in cloud a una credenziale di archiviazione .
-
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
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