Pular para o conteúdo principal

Trabalhe com tabelas externas

No Unity Catalog, uma tabela externa armazena seus arquivos de dados no armazenamento de objetos cloud dentro do seu tenant cloud . O Unity Catalog continua a gerenciar os metadados da tabela, garantindo total governança de dados em todas as consultas. No entanto, não gerencia o ciclo de vida dos dados, a otimização, o local de armazenamento ou a disposição.

Ao definir uma tabela externa do Unity Catalog, você deve especificar um local de armazenamento. Este local é um local externo registrado no Unity Catalog. Ao excluir uma tabela externa, o Unity Catalog remove os metadados da tabela, mas não exclui os arquivos de dados subjacentes.

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.

Quando usar tabelas externas

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.
  • Você também precisa de acesso direto aos dados a partir de clientes que não sejam da Databricks e que não ofereçam suporte a outros padrões de acesso externo. As permissões Unity Catalog não são aplicadas quando os usuários acessam arquivos de dados de sistemas externos. Consulte o uso de dados de sistemas externos do Access Databricks.

Na maioria dos casos, Databricks recomenda o uso do Unity Catalog para gerenciar tabelas , aproveitando a otimização automática de tabelas, o desempenho mais rápido das consultas e a redução de custos. Para migrar tabelas externas para tabelas gerenciais, consulte Converter uma tabela externa em uma tabela gerencial Unity Catalog.

importante

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

Criar uma tabela externa

Você pode criar tabelas externas usando comandos SQL ou operações de escrita DataFrame .

Antes de começar

Antes de criar uma tabela externa, você precisa primeiro configurar um local externo que conceda acesso ao seu armazenamento cloud .

Para obter mais informações sobre como configurar locais externos, consulte Conectar-se a um local externo Google Cloud Storage (GCS).

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

Quando um local externo do S3 estiver associado a vários metastores, evite conceder acesso de gravação às tabelas que usam esse local do S3, pois gravações de diferentes metastores na mesma tabela externa podem causar problemas de consistência. No entanto, a leitura a partir do mesmo local externo do S3 em vários metastores é segura.

Exemplos de comandosSQL

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 escrita em DataFrame

Você também pode criar tabelas externas a partir de resultados de consultas ou operações de gravação DataFrame . Use a cláusula LOCATION para especificar o caminho de armazenamento externo ao criar tabelas com DataFrames.

As seguintes opções de sintaxe SQL funcionam com operações de DataFrame:

Excluir 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.