Pular para o conteúdo principal

O que são volumes do Unity Catalog?

Os volumes são objetos Unity Catalog que permitem a governança de conjuntos de dados não tabulares. Os volumes representam um volume lógico de armazenamento em um local de armazenamento de objetos na nuvem. Os volumes fornecem recursos para acessar, armazenar, controlar e organizar arquivos.

Enquanto as tabelas fornecem governança sobre o conjunto de dados tabulares, os volumes adicionam governança sobre o conjunto de dados não tabulares. Você pode usar volumes para armazenar e acessar arquivos em qualquer formato, incluindo dados estruturados, semiestruturados e não estruturados.

A Databricks recomenda o uso de volumes para controlar o acesso a todos os dados não tabulares. Assim como as tabelas, os volumes podem ser gerenciados ou externos.

important

Você não pode usar volumes como um local para tabelas. Os volumes são destinados somente ao acesso a dados baseado em caminhos. Use tabelas quando o senhor quiser trabalhar com dados tabulares no Unity Catalog.

Os artigos a seguir fornecem mais informações sobre como trabalhar com volumes:

nota

Ao trabalhar com volumes, o senhor deve usar um SQL warehouse ou um clustering que esteja executando Databricks Runtime 13.3 LTS ou acima, a menos que esteja usando Databricks UIs, como o Catalog Explorer.

O que é um volume gerenciar?

Um volume gerenciar é um volume de armazenamento governado pelo Unity Catalog criado no local de armazenamento gerenciar do esquema que o contém. Consulte Especificar um local de armazenamento gerenciar em Unity Catalog.

gerenciar volumes permite a criação de armazenamento controlado para trabalhar com arquivos sem a sobrecarga de locais externos e credenciais de armazenamento. Você não precisa especificar um local ao criar um volume gerenciado, e todo acesso a arquivos para dados em volumes gerenciados é através de caminhos gerenciados pelo Unity Catalog.

O que é um volume externo?

Um volume externo é um volume de armazenamento regido pelo Unity Catalog registrado em um diretório em um local externo usando credenciais de armazenamento regido pelo Unity Catalog.

Unity Catalog não gerencia o ciclo de vida e a disposição dos arquivos em volumes externos. Quando o senhor solta um volume externo, o Unity Catalog não exclui os dados subjacentes.

Qual caminho é usado para acessar arquivos em um volume?

Os volumes estão no terceiro nível do namespace de três níveis do Unity Catalog (catalog.schema.volume):

Diagrama do modelo de objeto do Unity Catalog, com foco no volume

O caminho para acessar os volumes é o mesmo, quer o senhor use Apache Spark, SQL, Python, ou outros idiomas e biblioteca. Isso difere dos padrões de acesso herdados para arquivos no armazenamento de objetos vinculados a um Databricks workspace.

O caminho para acessar arquivos em volumes usa o seguinte formato:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

A Databricks também oferece suporte a um esquema dbfs:/ opcional ao trabalhar com o Apache Spark, portanto, o seguinte caminho também funciona:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

A sequência /<catalog>/<schema>/<volume> no caminho corresponde aos três nomes de objetos do Unity Catalog associados ao arquivo. Esses elementos de caminho são somente de leitura e não podem ser gravados diretamente pelos usuários, o que significa que não é possível criar ou excluir esses diretórios usando operações do sistema de arquivos. Eles são gerenciados automaticamente e mantidos em sincronia com as entidades correspondentes do site Unity Catalog.

nota

Você também pode acessar dados em volumes externos usando URIs de armazenamento em nuvem.

Caminhos reservados para volumes

Volumes apresenta os seguintes caminhos reservados usados para acessar volumes:

  • dbfs:/Volumes
  • /Volumes
nota

Os caminhos também são reservados para possíveis erros de digitação para esses caminhos das APIs do Apache Spark e dbutils, incluindo /volumes, /Volume, /volume, independentemente de serem ou não precedidos por dbfs:/. O caminho /dbfs/Volumes também é reservado, mas não pode ser usado para acessar volumes.

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 os caminhos /Volumes podem ser bem-sucedidas, mas só podem gravar dados em discos de armazenamento efêmeros anexados ao clustering compute, em vez de persistir os dados em volumes Unity Catalog, como esperado.

important

Se o senhor tiver dados pré-existentes armazenados em um caminho reservado no site DBFS root, poderá registrar um tíquete de suporte para obter acesso temporário a esses dados e movê-los para outro local.

Limitações

O senhor deve usar Unity Catalog-enabled compute para interagir com os volumes Unity Catalog. Os volumes não suportam todas as cargas de trabalho.

A tabela a seguir descreve as limitações de volume do Unity Catalog com base na versão do Databricks Runtime:

Versão do Databricks Runtime

Limitações

14.3 LTS e acima

  • Em compute com o modo de acesso dedicado (antigo modo de acesso de usuário único), o senhor não pode acessar volumes de threads e subprocessos em Scala.

14.2 e abaixo

  • Em compute configurado com o modo de acesso padrão (antigo modo de acesso compartilhado), o senhor não pode usar UDFs para acessar volumes.

    • Tanto o Python quanto o Scala têm acesso ao FUSE pelo driver, mas não pelo executor.
    • Scala O código que realiza operações de E/S pode ser executado no driver, mas não no executor.
  • Em compute configurado com o modo de acesso dedicado, não há suporte para FUSE em Scala, Scala IO code acessando caminhos de volume de uso de dados ou Scala UDFs. Os UDFs do Python são compatíveis com o modo de acesso dedicado.

Todas as versões suportadas do Databricks Runtime

  • Os volumes não suportam o comando dbutils.fs distribuído ao executor.
  • Os UDFs do Unity Catalog não suportam o acesso a caminhos de arquivos de volume.
  • Você não pode acessar volumes a partir de RDDs.
  • Você não pode usar spark-submit com JARs armazenados em um volume.
  • O senhor não pode definir dependências para outras bibliotecas acessadas por meio de caminhos de volume dentro de um arquivo wheel ou JAR.
  • O senhor não pode listar objetos do Unity Catalog usando os padrões /Volumes/<catalog-name> ou /Volumes/<catalog-name>/<schema-name>. Você deve usar um caminho totalmente qualificado que inclua um nome de volume, no formato Volumes/<catalog-name>/<schema-name>/<volume-name>. Por exemplo, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • O site DBFS endpoint para o site REST API não oferece suporte a caminhos de volumes.
  • O senhor não pode especificar volumes como destino para a entrega do log de clustering.
  • %sh mv não é compatível com a movimentação de arquivos entre volumes. Em vez disso, use dbutils.fs.mv ou %sh cp.
  • O senhor não pode criar um sistema de arquivos Hadoop personalizado com volumes. Por exemplo, usar new Path("dbfs:/Volumes/main/default/test-volume/file.txt") para criar um objeto org.apache.hadoop.fs.path não funcionará.