Externa tabeller

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime

Unity Catalog och det inbyggda Azure Databricks Hive-metaarkivet använder standardplatser för hanterade tabeller. Unity Catalog introducerar flera nya skyddsbara objekt som ger behörighet till data i molnobjektlagring.

Extern tabell

En extern tabell är en tabell som refererar till en extern lagringssökväg med hjälp av en LOCATION sats.

Lagringssökvägen ska finnas på en befintlig extern plats som du har beviljats åtkomst till.

Du kan också referera till en lagringsautentiseringsuppgift som du har beviljats åtkomst till.

Med hjälp av externa tabeller abstraheras lagringssökvägen, den externa platsen och lagringsautentiseringsuppgifterna för användare som beviljas åtkomst till den externa tabellen.

Varning

Om ett schema (databas) har registrerats i hive-metaarkivet på arbetsytan, tar du bort schemat med hjälp av CASCADE alternativet så att alla filer på den schemaplatsen tas bort rekursivt, oavsett tabelltyp (hanterad eller extern).

Om schemat är registrerat i ett Unity Catalog-metaarkiv tas filerna för hanterade Unity Catalog-tabeller bort rekursivt. Filerna för externa tabeller tas dock inte bort. Du måste hantera dessa filer direkt med hjälp av molnlagringsprovidern.

För att undvika oavsiktlig dataförlust bör du därför aldrig registrera ett schema i ett Hive-metaarkiv till en plats med befintliga data. Du bör inte heller skapa nya externa tabeller på en plats som hanteras av Hive-metaarkivscheman eller som innehåller hanterade Unity Catalog-tabeller.

Grafisk representation av relationer

Följande diagram beskriver relationen mellan:

  • autentiseringsuppgifter för lagring
  • externa platser
  • externa tabeller
  • lagringssökvägar
  • IAM-entiteter
  • Azure-tjänstkonton

External location ER diagram

Exempel

-- `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