Trabalhar com tabelas externas

As tabelas externas armazenam dados em um diretório no armazenamento de objetos cloud em seu cloud tenant. O senhor deve especificar um local de armazenamento ao definir uma tabela externa.

Databricks Recomenda o uso de tabelas externas somente quando o senhor precisar de acesso direto aos dados sem usar compute em Databricks. Os privilégios do Unity Catalog não são aplicados quando os usuários acessam arquivos de dados de sistemas externos.

Observação

Este artigo se concentra em Unity Catalog tabelas externas. As tabelas externas no site legado Hive metastore têm comportamentos diferentes. Consulte Objetos de banco de dados no site legado Hive metastore.

Trabalhar com tabelas externas

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

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

Tabelas externas podem usar os seguintes formatos de arquivo:

  • DELTA

  • CSV

  • JSON

  • AVRO

  • PARQUET

  • ORC

  • TEXT

Criar uma tabela externa

Para criar uma tabela externa, o senhor pode usar SQL comando ou Dataframe write operações.

Antes de começar

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

  • O privilégio CREATE EXTERNAL TABLE em um local externo que concede acesso ao LOCATION acessado 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, consulte Criar um local externo para conectar o armazenamento cloud a Databricks.

Observação

Quando o senhor conceder acesso a uma tabela externa, esteja ciente do seguinte: A Databricks recomenda que o senhor conceda privilégios de gravação em uma tabela cujo backup é feito por um local externo no S3 somente se o local externo estiver definido em um único metastore. O senhor pode ler dados com segurança em um único local externo S3 de mais de um metastore, mas gravações simultâneas no mesmo local S3 de vários metastores podem levar a problemas de consistência.

SQL exemplos de comando

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

Nos exemplos a seguir, substitua os valores nos espaços reservados:

  • <catalog>: nome do catálogo que conterá a tabela.

  • <schema>: nome do esquema que conterá a tabela.

  • <table-name>: Um nome para a tabela.

  • <column-specification>: o nome e o tipo de dados de cada coluna.

  • <bucket-path>: O caminho para o bucket de armazenamento cloud onde a tabela será criada.

  • <table-directory>: diretório onde a tabela será criada. Use um diretório exclusivo para cada tabela.

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

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

Operações de gravação de dataframe

Muitos usuários criam tabelas externas a partir de resultados de consultas ou operações de gravação de DataFrame. Os artigos a seguir demonstram alguns dos muitos padrões que o senhor pode usar para criar uma tabela externa na Databricks:

Eliminar uma tabela externa

Para eliminar uma tabela, o senhor deve ser o proprietário dela. Para eliminar uma tabela externa, execute o seguinte comando SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog não exclui os dados subjacentes no armazenamento cloud quando o senhor elimina uma tabela externa. O senhor deve excluir diretamente os arquivos de dados subjacentes se precisar remover os dados associados à tabela.

Exemplo Notebook: Criar tabelas externas

O senhor pode usar o seguinte exemplo Notebook para criar um catálogo, um esquema e uma tabela externa e para gerenciar as permissões neles.

Criar e gerenciar uma tabela externa em Unity Catalog Notebook

Abra o bloco de anotações em outra guia