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.
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 TABLEem um local externo que concede acesso aoLOCATIONacessado pela tabela externa. - A permissão
USE CATALOGno catálogo principal da tabela. - A permissão
USE SCHEMAno esquema principal da tabela. - A permissão
CREATE TABLEno esquema principal da tabela.
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.
- GCS
- S3
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'gs://<bucket-path>/<table-directory>';
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 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:
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.