Compartilhar via


Trabalhar com tabelas externas

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

O Databricks recomenda usar tabelas externas somente quando você precisar de acesso direto aos dados sem usar a computação no Azure Databricks. Os privilégios do Catálogo do Unity não são aplicados quando os usuários obtém acesso aos arquivos de dados de sistemas externos.

Observação

Este artigo se concentra nas tabelas externas do Catálogo do Unity. As tabelas externas no metastore do Hive herdado apresentam comportamentos diferentes. Veja Objetos de banco de dados no metastore do Hive herdado.

Trabalhar com tabelas externas

O Azure Databricks gerencia somente os metadados para as tabelas externas e não usa o local de armazenamento gerenciado associado ao esquema que contém a tabela. O registro da tabela no Catálogo do Unity é apenas um ponteiro para os arquivos de dados. Ao descartar uma tabela externa, os arquivos de dados não são excluídos.

Ao criar uma tabela externa, você pode efetuar o registro em 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 arquivos:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARQUET
  • ORC
  • TEXT

Criar uma tabela externa

Para criar uma tabela externa, você pode usar comandos SQL ou operações de gravação de 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 em um local externo, que concede acesso ao LOCATION 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 a configuração de locais externos, confira Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks.

Exemplos de comandos SQL

Use um dos exemplos de comando a seguir em um notebook ou no editor de consultas SQL para criar uma tabela externa.

Nos seguintes exemplos, substitua os valores de espaço reservado:

  • <catalog>: O nome do catálogo que conterá a tabela.
  • <schema>: O nome do esquema que conterá a tabela.
  • <table-name>: O nome do catálogo.
  • <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 em que 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 os parâmetros de criação de tabelas, confira CREATE TABLE.

Operações de gravação de DataFrame

Muitos usuários criam tabelas externas usando os resultados de consultas ou operações de gravação de DataFrame. Os seguintes artigos demonstram alguns dos muitos padrões que você pode usar para criar uma tabela externa no Azure Databricks:

Descartar uma tabela externa

Para remover uma tabela, você deve ser seu proprietário. Para descartar uma tabela externa, realize a execução do seguinte comando SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

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

Notebook de exemplo: criar tabelas externas

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

Criar e gerenciar uma tabela externa no notebook do Unity Catalog

Obter notebook