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 têm suporte apenas no Databricks Runtime 13.2e acima. No Databricks Runtime 13.1 e abaixo, as operações em caminhos /Volumes podem ser bem-sucedidas, mas podem gravar dados em discos de armazenamento efêmeros anexados a clusters compute em vez de dados persistentes em volumes Unity Catalog conforme o 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. Veja gerenciar armazenamento.

  • 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.

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?

Os objetos do Unity Catalog fornecem acesso aos dados por meio de identificadores de objeto, caminhos de volume ou URIs cloud . Você pode acessar dados associados a alguns objetos por meio de vários métodos.

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>

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.