Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No Unity Catalog, uma tabela externa armazena os seus ficheiros de dados em armazenamento de objetos na cloud dentro do seu locatário na cloud. O Unity Catalog continua a gerir os metadados da tabela, garantindo uma governação total dos dados em todas as consultas. No entanto, não gere o ciclo de vida dos dados, a otimização, a localização do armazenamento ou o layout.
Quando defines uma tabela externa do Unity Catalog, deves especificar uma localização de armazenamento. Esta localização é uma localização externa registada no Unity Catalogue. Quando se elimina uma tabela externa, o Unity Catalog remove os metadados da tabela mas não apaga os ficheiros de dados subjacentes.
Este artigo se concentra nas tabelas externas do Unity Catalog. As tabelas externas no metastore herdado do Hive têm comportamentos diferentes. Consulte Objetos de base de dados na metastore herdada do Hive.
Quando usar tabelas externas
O Databricks recomenda o uso de tabelas externas para os seguintes casos de uso:
- Você precisa registrar uma tabela apoiada por dados existentes que não são compatíveis com tabelas gerenciadas pelo Unity Catalog.
- Você também precisa de acesso direto aos dados de clientes não-Databricks que não suportam outros padrões de acesso externo. Os privilégios do Catálogo Unity não são impostos quando os usuários acessam arquivos de dados de sistemas externos. Consulte aceder aos dados do Databricks usando sistemas externos.
Na maioria dos casos, a Databricks recomenda o uso de tabelas geridas pelo Unity Catalog para tirar partido da otimização automática das tabelas, desempenho de consultas mais rápido e custos reduzidos. Para migrar tabelas externas para tabelas geridas, veja Converter uma tabela externa para uma tabela Unity Catalog gerida.
Importante
Se você atualizar metadados de tabela externa usando um cliente não-Databricks ou usando acesso baseado em caminho de dentro do Databricks, esses metadados não sincronizarão automaticamente o estado com o Unity Catalog. A Databricks desaconselha tais atualizações de metadados, mas se realizar uma, deve executar MSCK REPAIR TABLE <table-name> SYNC METADATA para atualizar o esquema no Unity Catalog. Consulte REPAIR TABLE.
Formatos de ficheiro para tabelas externas
As tabelas externas podem usar os seguintes formatos de arquivo:
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORC
- TEXTO
Crie uma tabela externa
Pode criar tabelas externas usando comandos SQL ou operações de escrita DataFrame.
Antes de começar
Antes de criar uma tabela externa, deve primeiro configurar uma localização externa que conceda acesso ao seu armazenamento na cloud.
Para mais informações sobre a configuração de localizações externas, consulte Criar uma localização externa para ligar armazenamento na cloud ao Azure Databricks.
Para criar uma tabela externa, você deve atender aos seguintes requisitos de permissão:
- O privilégio
CREATE EXTERNAL TABLEnum local externo que concede acesso aoLOCATION, acedido pela tabela externa. - A
USE CATALOGpermissão no catálogo pai da tabela. - A
USE SCHEMApermissão no esquema pai da tabela. - A
CREATE TABLEpermissão no esquema pai da tabela.
Observação
Quando uma localização externa S3 está associada a múltiplas metastores, evite conceder acesso de escrita a tabelas que utilizam essa localização S3, pois escritas de diferentes metastores para a mesma tabela externa podem causar problemas de consistência. No entanto, é seguro ler a partir da mesma localização externa do S3 em diferentes metastores.
Exemplos de comandos SQL
Use um dos seguintes exemplos de comando em um bloco de anotações ou no editor de consultas SQL para criar uma tabela externa.
Nos exemplos a seguir, substitua os valores de marcador de posição:
-
<catalog>: O nome do catálogo que conterá a tabela. -
<schema>: O nome do esquema que conterá a tabela. -
<table-name>: Um nome para a tabela. -
<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 onde a tabela será criada. Use um diretório exclusivo para cada tabela.
ADLS
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
S3
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';
Para obter mais informações sobre parâmetros de criação de tabela, consulte CREATE TABLE.
Operações de escrita em DataFrame
Também pode criar tabelas externas a partir de resultados de consultas ou operações de escrita em DataFrame. Use a LOCATION cláusula para especificar o caminho de armazenamento externo ao criar tabelas com DataFrames.
As seguintes opções de sintaxe SQL funcionam com operações DataFrame:
Descarte uma tabela externa
Para eliminar uma tabela, deve ser o seu proprietário ou ter o privilégio MANAGE na tabela. Para soltar 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 você solta uma tabela externa. Você deve excluir diretamente os arquivos de dados subjacentes se precisar remover os dados associados à tabela.
Exemplo de bloco de anotações: Criar tabelas externas
Você pode usar o bloco de anotações de exemplo a seguir para criar um catálogo, esquema e tabela externa e para gerenciar permissões neles.