Trabalhar com tables externos
Os dados do armazenamento tables externo são armazenados num diretório no armazenamento de objetos na nuvem no seu locatário de nuvem. Você deve especificar um local de armazenamento ao definir um tableexterno.
O Databricks recomenda o uso de tables externos somente quando você precisar de acesso direto aos dados sem usar computação no Azure Databricks. Os privilégios do Unity Catalog não são aplicados quando os usuários acessam arquivos de dados de sistemas externos.
Nota
Este artigo concentra-se em Unity Catalog externos tables. Os tables externos no metastore herdado do Hive têm comportamentos diferentes. Consulte Objetos de banco de dados no metastore herdado do Hive.
Trabalhar com tables externos
Azure Databricks gerencia apenas os metadados para tables externos e não usa o local de armazenamento gerido associado ao schemacorrespondente. O registo table no Unity Catalog é apenas um ponteiro para ficheiros de dados. Quando você solta um tableexterno, os arquivos de dados não são excluídos.
Ao criar um tableexterno, você pode registrar um diretório existente de arquivos de dados como um table ou fornecer um caminho para criar novos arquivos de dados.
Os tables externos podem usar os seguintes formatos de arquivo:
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORC
- TEXTO
Criar uma table externa
Para criar um tableexterno, pode usar comandos SQL ou operações de gravação Dataframe.
Antes de começar
Para criar um tableexterno, você deve atender aos seguintes requisitos de permissão:
- O privilégio
CREATE EXTERNAL TABLE
num local exterior que concede acesso aoLOCATION
acedido pelo tableexterior. - A permissão
USE SCHEMA
no schemapai de table. - A permissão
USE CATALOG
no pai catalogde table. - A permissão
CREATE TABLE
no pai do table, schema.
Para obter mais informações sobre como configurar locais externos, consulte Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks.
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 um tableexterno.
Nos exemplos a seguir, substitua o marcador de posição values:
-
<catalog>
: O nome do catalog que conterá o table. -
<schema>
: O nome do schema que conterá o table. -
<table-name>
: Um nome para o table. -
<column-specification>
: O nome e o tipo de dados para cada column. -
<bucket-path>
: O caminho para o bucket de armazenamento em nuvem where o table será criado. -
<table-directory>
: Um diretório com o where e table será criado. Use um diretório exclusivo para cada table.
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Para obter mais informações sobre a criação de tableparameters, consulte CREATE TABLE.
Operações de gravação de dataframe
Muitos utilizadores criam tables externos a partir de resultados de consultas ou operações de escrita do DataFrame. Os artigos a seguir demonstram alguns dos muitos padrões que você pode usar para criar um table externo no Azure Databricks:
Solte uma table externa
Para remover um table você deve ser o seu proprietário ou ter o privilégio MANAGE
no table. Para soltar um tableexterno, execute o seguinte comando SQL:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
O Unity Catalog não elimina os dados subjacentes no armazenamento em nuvem quando removes um tableexterno. Você deve excluir diretamente os arquivos de dados subjacentes se precisar remove dados associados ao table.
Bloco de notas de exemplo: Criar tables externo
Você pode usar o caderno de anotações de exemplo a seguir para criar um cataloge schemainternos e um tableexterno, e para gerenciar permissões nesses itens.