Partilhar via


Tabelas externas

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime

O Catálogo Unity e o metastore interno do Azure Databricks Hive usam locais padrão para tabelas gerenciadas. O Unity Catalog introduz vários novos objetos protegíveis para conceder privilégios aos dados no armazenamento de objetos na nuvem.

Tabela externa

Uma tabela externa é uma tabela que faz referência a um caminho de armazenamento externo usando uma LOCATION cláusula.

O caminho de armazenamento deve estar contido em um local externo existente ao qual você tenha recebido acesso.

Como alternativa, você pode fazer referência a uma credencial de armazenamento à qual você recebeu acesso.

O uso de tabelas externas abstrai o caminho de armazenamento, o local externo e a credencial de armazenamento para os usuários aos quais é concedido acesso à tabela externa.

Aviso

Se um esquema (banco de dados) estiver registrado no metastore do Hive no nível do espaço de trabalho, descartar esse esquema usando a CASCADE opção fará com que todos os arquivos nesse local do esquema sejam excluídos recursivamente, independentemente do tipo de tabela (gerenciada ou externa).

Se o esquema estiver registrado em um metastore do Unity Catalog, os arquivos das tabelas gerenciadas do Unity Catalog serão excluídos recursivamente. No entanto, os arquivos para tabelas externas não são excluídos. Você deve gerenciar esses arquivos usando o provedor de armazenamento em nuvem diretamente.

Portanto, para evitar a perda acidental de dados, você nunca deve registrar um esquema em um metastore do Hive em um local com dados existentes. Também não deve criar novas tabelas externas em um local gerenciado por esquemas de metastore do Hive ou contendo tabelas gerenciadas do Unity Catalog.

Representação gráfica de relações

O diagrama a seguir descreve a relação entre:

  • Credenciais de armazenamento
  • Localizações externas
  • Tabelas externas
  • caminhos de armazenamento
  • Entidades do IAM
  • Contas de serviço do Azure

Diagrama ER de localização externa

Exemplos

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