Compartilhar via


Tabelas externas

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

O Catálogo do Unity e o metastore Hive do Azure Databricks incorporado usam locais padrões para tabelas gerenciadas. O Catálogo do Unity apresenta 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 cláusula LOCATION.

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ê tenha concedido acesso.

O uso de tabelas externas abstrai o caminho de armazenamento, o local externo e a credencial de armazenamento para usuários que recebem acesso à tabela externa.

Aviso

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

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

Portanto, para evitar a perda acidental de dados, você nunca deve registrar um esquema em um metastore do Hive em um local em que já haja dados. Você também não deve criar novas tabelas externas em um local gerenciado por esquemas de metastore do Hive nem que contenha tabelas gerenciadas do Catálogo do Unity.

Representação gráfica de relacionamentos

O diagrama a seguir mostra o relacionamento entre:

  • credenciais de armazenamento
  • locais externos
  • tabelas externas
  • caminhos de armazenamento
  • entidades IAM
  • contas de serviço do Azure

Diagrama de ER de um local externo

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