Como funcionam os caminhos para dados gerenciados pelo Unity Catalog?
Este artigo explica as restrições sobre sobreposições de caminho no Unity Catalog, detalha os padrões de acesso baseados em caminho para arquivos de dados em objetos Unity Catalog e descreve como Unity Catalog gerencia caminhos para tabelas e volumes.
Observação
Os volumes são compatíveis apenas com o Databricks Runtime 13.3 LTS e acima. Em Databricks Runtime 12.2 LTS e abaixo, as operações contra caminhos /Volumes
podem ser bem-sucedidas, mas elas só podem gravar dados em discos de armazenamento efêmeros anexados a compute clusters em vez de persistir os dados em volumes Unity Catalog, como esperado.
Caminhos para objetos do Unity Catalog não podem se sobrepor
O Unity Catalog reforça a governança de dados impedindo que os diretórios gerenciados de dados se sobreponham. O Unity Catalog impõe as seguintes regras:
Locais externos não podem se sobrepor a outros locais externos.
Tabelas e volumes armazenam arquivos de dados em locais externos ou no local raiz do metastore.
Os volumes não podem se sobrepor a outros volumes.
As tabelas não podem se sobrepor a outras tabelas.
Tabelas e volumes não podem se sobrepor.
Os locais de armazenamento gerenciados não podem se sobrepor uns aos outros. Consulte Especificar um local de armazenamento gerenciar em Unity Catalog.
Os volumes externos não podem se sobrepor aos locais de armazenamento gerenciados.
As tabelas externas não podem se sobrepor aos locais de armazenamento gerenciados.
Essas regras significam que existem as seguintes restrições no Unity Catalog:
Você não pode definir um local externo dentro de outro local externo.
Você não pode definir um volume dentro de outro volume.
Você não pode definir uma tabela dentro de outra tabela.
Você não pode definir uma tabela em nenhum arquivo de dados ou diretório dentro de um volume.
Você não pode definir um volume em um diretório dentro de uma tabela.
Observação
Você sempre pode usar o acesso baseado em caminho para gravar ou ler arquivos de dados de volumes, incluindo Delta Lake. Você não pode registrar esses arquivos de dados como tabelas no metastore do Unity Catalog .
Caminhos para gerenciar tabelas e gerenciar volumes são totalmente gerenciados pelo Unity Catalog
Quando você cria uma tabela gerenciada ou um volume gerenciado, Unity Catalog cria um novo diretório no local de armazenamento configurado pelo Unity Catalogassociado ao esquema recipiente. O nome deste diretório é gerado aleatoriamente para evitar qualquer possível colisão com outros diretórios já presentes.
Este comportamento difere de como Hive metastore cria tabelas gerenciadas. A Databricks recomenda sempre interagir com Unity Catalog gerenciando tabelas usando nomes de tabela e Unity Catalog gerenciando volumes usando caminhos de volume.
Caminhos para tabelas externas e volumes externos são regidos pelo Unity Catalog
Ao criar uma tabela externa ou um volume externo, você especifica um caminho dentro de um local externo controlado pelo Unity Catalog.
Importante
Databricks recomenda nunca criar um volume externo ou tabela externa na raiz de um local externo. Em vez disso, crie volumes externos e tabelas externas em subdiretórios dentro de um local externo. Essas recomendações devem ajudar a evitar a sobreposição acidental de caminhos. Consulte Caminhos para objetos Unity Catalog não podem se sobrepor.
Para facilidade de uso, o Databricks recomenda interagir com tabelas externas do Unity Catalog usando nomes de tabela e volumes externos do Unity Catalog usando caminhos de volume.
Como alternativa, os usuários com privilégios suficientes no objeto Unity Catalog correspondente podem acessar os dados de uma tabela externa ou de um volume externo usando o caminho de armazenamento do objeto cloud totalmente qualificado.
Importante
Unity Catalog gerencia todos os privilégios de acesso usando URIs cloud para dados associados a tabelas externas ou volumes externos. Esses privilégios substituem quaisquer privilégios associados a locais externos. Veja os privilégios do Unity Catalog e objetos protegíveis
Como você pode acessar os dados no Unity Catalog?
Unity Catalog fornecem acesso aos dados por meio de identificadores de objeto, caminhos de volume ou URIs cloud. O senhor pode usar esses valores para acessar dados associados a volumes e tabelas.
As tabelas do Unity Catalog são acessadas usando um identificador de três camadas com o seguinte padrão:
<catalog_name>.<schema_name>.<table_name>
O que são caminhos de arquivos de volume no Unity Catalog?
Os volumes fornecem um caminho de arquivo para acessar arquivos de dados com o seguinte padrão:
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
cloud URIs exigem que os usuários forneçam o driver, o identificador do contêiner de armazenamento e o caminho completo para os arquivos de destino, como no exemplo a seguir:
s3://<bucket_name>/<path>
A tabela a seguir mostra os métodos de acesso permitidos para objetos do Unity Catalog:
Objeto |
identificador de objeto |
Caminho de arquivo |
cloud URI |
---|---|---|---|
Localização externa |
Não |
Não |
Sim |
mesa gerenciadora |
Sim |
Não |
Não |
mesa externa |
Sim |
Não |
Sim |
gerenciar volume |
Não |
Sim |
Não |
Volume externo |
Não |
Sim |
Sim |
Observação
Os volumes do Unity Catalog usam identificadores de objeto de três camadas com o seguinte padrão para comandos de gerenciamento (como CREATE VOLUME
e DROP VOLUME
):
<catalog_name>.<schema_name>.<volume_name>
Para realmente trabalhar com arquivos em volumes, você deve usar o acesso baseado em caminho.