Pular para o conteúdo principal

Trabalhe com tabelas externas

Unity Catalog rege as permissões de acesso aos dados externos para todas as consultas que passam pelo site Unity Catalog, mas não gerencia o ciclo de vida dos dados, as otimizações, o local de armazenamento ou a disposição.

As tabelas externas armazenam dados em um diretório no armazenamento de objetos na nuvem em sua nuvem tenant. Você deve especificar um local de armazenamento ao definir uma tabela externa. Quando você 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 um novo diretório que armazene os arquivos de dados que sustentam a tabela.

A Databricks recomenda o uso de tabelas externas para os seguintes casos de uso:

  • O senhor precisa registrar uma tabela apoiada por dados existentes que não são compatíveis com as tabelas gerenciadas pelo Unity Catalog.
  • O senhor também precisa de acesso direto aos dados de clientes que não sejam da Databricks e que não suportem outros padrões de acesso externo. Consulte Access Databricks uso de dados sistemas externos.

Os privilégios do Unity Catalog não são aplicados quando os usuários acessam arquivos de dados de sistemas externos.

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.

important

Se o senhor atualizar os metadados da tabela externa usando um cliente que não seja do Databricks ou usando o acesso baseado em caminho de dentro do Databricks, esses metadados não sincronizarão automaticamente o estado com o Unity Catalog. Databricks não recomenda essas atualizações de metadados, mas se o senhor fizer uma, deverá executar MSCK REPAIR TABLE <table-name> SYNC METADATA para atualizar o esquema em Unity Catalog. Veja a TABELA DE REPARO.

Formatos de arquivo para tabelas externas

Tabelas externas podem usar os seguintes formatos de arquivo:

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

Crie 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, você 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 principal da tabela.
  • A permissão USE CATALOG no catálogo principal da tabela.
  • A permissão CREATE TABLE no esquema principal da tabela.

Para obter mais informações sobre a configuração de locais externos, consulte Criar um local externo para conectar o armazenamento em nuvem a Databricks.

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 em nuvem em que a tabela será criada.
  • <table-directory>: diretório onde a tabela será criada. Use um diretório exclusivo para cada tabela.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'gs://<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:

Elimine uma tabela externa

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

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 o senhor exclui uma tabela externa. Você deve excluir diretamente os arquivos de dados subjacentes se precisar remover os dados associados à tabela.

Exemplo de notebook: Criar tabelas externas

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

Criar e gerenciar uma tabela externa no Unity Catalog Notebook

Open notebook in new tab