Trabalhar com tabelas externas
As tabelas externas armazenam dados em um diretório no armazenamento de objetos na nuvem do seu locatário de nuvem. É necessário especificar um local de armazenamento ao definir uma tabela externa.
O Databricks recomenda usar tabelas externas somente quando você precisar de acesso direto aos dados sem usar a computação no Azure Databricks. Os privilégios do Catálogo do Unity não são aplicados quando os usuários obtém acesso aos arquivos de dados de sistemas externos.
Observação
Este artigo se concentra nas tabelas externas do Catálogo do Unity. As tabelas externas no metastore do Hive herdado apresentam comportamentos diferentes. Veja Objetos de banco de dados no metastore do Hive herdado.
Trabalhar com tabelas externas
O Azure Databricks gerencia somente os metadados para as tabelas externas e não usa o local de armazenamento gerenciado associado ao esquema que contém a tabela. O registro da tabela no Catálogo do Unity é apenas um ponteiro para os arquivos de dados. Ao descartar uma tabela externa, os arquivos de dados não são excluídos.
Ao criar uma tabela externa, você pode efetuar o registro em um diretório existente de arquivos de dados, como uma tabela, ou fornecer um caminho para criar novos arquivos de dados.
As tabelas externas podem usar os seguintes formatos de arquivos:
- DELTA
- CSV
- JSON
- AVRO
- PARQUET
- ORC
- TEXT
Criar uma tabela externa
Para criar uma tabela externa, você pode usar comandos SQL ou operações de gravação de DataFrame.
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 aoLOCATION
pela tabela externa. - A permissão
USE SCHEMA
no esquema pai da tabela. - A permissão
USE CATALOG
no catálogo pai da tabela. - A permissão
CREATE TABLE
no esquema pai da tabela.
Para obter mais informações sobre a configuração de locais externos, confira Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks.
Exemplos de comandos SQL
Use um dos exemplos de comando a seguir em um notebook ou no editor de consultas SQL para criar uma tabela externa.
Nos seguintes exemplos, substitua os valores de espaço reservado:
<catalog>
: O nome do catálogo que conterá a tabela.<schema>
: O nome do esquema que conterá a tabela.<table-name>
: O nome do catálogo.<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 em que a tabela será criada. Use um diretório exclusivo para cada tabela.
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Para obter mais informações sobre os parâmetros de criação de tabelas, confira CREATE TABLE.
Operações de gravação de DataFrame
Muitos usuários criam tabelas externas usando os resultados de consultas ou operações de gravação de DataFrame. Os seguintes artigos demonstram alguns dos muitos padrões que você pode usar para criar uma tabela externa no Azure Databricks:
Descartar uma tabela externa
Para remover uma tabela, você deve ser seu proprietário. Para descartar uma tabela externa, realize a execução do seguinte comando SQL:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
O Catálogo do Unity não exclui os dados subjacentes no armazenamento em nuvem quando você descarta uma tabela externa. Você deve excluir diretamente os arquivos de dados subjacentes se precisar remover os dados associados à tabela.
Notebook de exemplo: criar tabelas externas
Você pode usar o notebook de exemplo a seguir para criar um catálogo, um esquema e uma tabela externa e gerenciar permissões neles.