Partilhar via


Trabalhar com tabelas externas

As tabelas externas armazenam dados em um diretório no armazenamento de objetos na nuvem em seu locatário de nuvem. Você deve especificar um local de armazenamento ao definir uma tabela externa.

O Databricks recomenda o uso de tabelas externas somente quando você também precisar de acesso direto aos dados de clientes que não sejam Databricks. Os privilégios do Catálogo Unity não são impostos quando os usuários acessam arquivos de dados de sistemas externos.

Advertência

Se você atualizar metadados de tabela externa usando um cliente não-Databricks ou usando acesso baseado em caminho de dentro do Databricks, esses metadados não sincronizarão automaticamente o estado com o Unity Catalog. A Databricks desaconselha tais atualizações de metadados, mas se realizar uma, deve executar MSCK REPAIR TABLE <table-name> SYNC METADATA para atualizar o esquema no Unity Catalog. Consulte REPAIR TABLE.

Nota

Este artigo se concentra nas tabelas externas do Unity Catalog. As tabelas externas no metastore herdado do Hive têm comportamentos diferentes. Consulte Objetos de banco de dados no metastore herdado do Hive.

Trabalhar com tabelas externas

O Azure Databricks apenas gere os metadados para tabelas externas e não usa o local de armazenamento gerido associado ao esquema que o contém. O registro da tabela no Unity Catalog é apenas um ponteiro para arquivos de dados. Quando você solta uma tabela externa, os arquivos de dados não são excluídos.

Ao criar uma tabela externa, você pode registrar um diretório existente de arquivos de dados como uma tabela ou fornecer um caminho para criar novos arquivos de dados.

As tabelas externas podem usar os seguintes formatos de arquivo:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARQUET
  • ORC
  • TEXTO

Criar uma tabela externa

Para criar uma tabela externa, pode usar comandos SQL ou operações de gravação Dataframe.

Antes de começar

Para criar uma tabela externa, você deve atender aos seguintes requisitos de permissão:

  • O privilégio CREATE EXTERNAL TABLE num local externo que concede acesso ao LOCATION, acedido pela tabela externa.
  • A permissão USE SCHEMA no esquema pai da tabela.
  • A permissão USE CATALOG no catálogo pai da tabela.
  • A permissão CREATE TABLE no esquema pai da tabela.

Para obter mais informações sobre como configurar locais externos, consulte Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.

Exemplos de comandos SQL

Use um dos seguintes exemplos de comando em um bloco de anotações ou no editor de consultas SQL para criar uma tabela externa.

Nos exemplos a seguir, substitua os valores de marcador de posição:

  • <catalog>: O nome do catálogo que conterá a tabela.
  • <schema>: O nome do esquema que conterá a tabela.
  • <table-name>: Um nome para a tabela.
  • <column-specification>: O nome e o tipo de dados para cada coluna.
  • <bucket-path>: O caminho para o bucket de armazenamento em nuvem onde a tabela será criada.
  • <table-directory>: Um diretório onde a tabela será criada. Use um diretório exclusivo para cada tabela.
CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

Para obter mais informações sobre parâmetros de criação de tabela, consulte CREATE TABLE.

Operações de gravação de dataframe

Muitos utilizadores criam tabelas externas a partir de resultados de consulta ou de operações de escrita de DataFrame. Os artigos a seguir demonstram alguns dos muitos padrões que você pode usar para criar uma tabela externa no Azure Databricks:

Eliminar uma tabela externa

Para largar uma mesa, você deve ser seu proprietário ou ter o privilégio MANAGE na mesa. Para soltar uma tabela externa, execute o seguinte comando SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

O Unity Catalog não exclui os dados subjacentes no armazenamento em nuvem quando você solta uma tabela externa. Você deve excluir diretamente os arquivos de dados subjacentes se precisar remover os dados associados à tabela.

Exemplo de bloco de anotações: Criar tabelas externas

Você pode usar o bloco de anotações de exemplo a seguir para criar um catálogo, esquema e tabela externa e para gerenciar permissões neles.

Criar e gerenciar uma tabela externa no bloco de anotações do Unity Catalog

Obter bloco de notas