Sdílet prostřednictvím


Externí tabulky

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Katalog Unity a integrovaný metastore Azure Databricks Hive používají výchozí umístění pro spravované tabulky. Katalog Unity zavádí několik nových zabezpečitelných objektů pro udělení oprávnění k datům v cloudovém úložišti objektů.

Externí tabulka

Externí tabulka je tabulka, která odkazuje na cestu k externímu úložišti pomocí klauzule LOCATION.

Cesta k úložišti by měla být obsažena v existujícím externím umístění , ke kterému máte udělený přístup.

Případně můžete odkazovat na přihlašovací údaje úložiště, ke kterým máte udělený přístup.

Použití externích tabulek abstrahuje cestu k úložišti, externí umístění a přihlašovací údaje úložiště pro uživatele, kteří mají udělený přístup k externí tabulce.

Upozorňující

Pokud je ve vašem metastoru Hive na úrovni pracovního prostoru zaregistrované schéma (databáze), odstranění tohoto schématu pomocí možnosti CASCADE způsobí, že se všechny soubory v tomto umístění schématu odstraní rekurzivně bez ohledu na typ tabulky (spravovaný nebo externí).

Pokud je schéma zaregistrované v metastoru katalogu Unity, odstraní se rekurzivně soubory pro tabulky spravované katalogem Unity . Soubory pro externí tabulky se ale neodstraní. Tyto soubory musíte spravovat přímo pomocí poskytovatele cloudového úložiště.

Abyste se vyhnuli náhodné ztrátě dat, neměli byste nikdy registrovat schéma v metastoru Hive do umístění s existujícími daty. Ani byste neměli vytvářet nové externí tabulky v umístění spravovaném schématy metastore Hive nebo které obsahují spravované tabulky Katalogu Unity.

Grafické znázornění relací

Následující diagram popisuje vztah mezi:

  • přihlašovací údaje k úložišti
  • externí umístění
  • externí tabulky
  • cesty k úložišti
  • Entity IAM
  • Účty služeb Azure

Diagram ER externího umístění

Příklady

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