Partilhar via


O que são volumes do Catálogo Unity?

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

Enquanto as tabelas fornecem governança sobre conjuntos de dados tabulares, os volumes adicionam governança sobre conjuntos 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.

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

Importante

Não é possível usar volumes como um local para tabelas. Os volumes destinam-se apenas ao acesso a dados com base em caminhos. Use tabelas quando quiser trabalhar com dados tabulares no Unity Catalog.

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

Nota

Ao trabalhar com volumes, você deve usar um SQL warehouse ou um cluster que execute o Databricks Runtime 13.3 LTS ou superior, a menos que esteja usando as interfaces do usuário do Azure Databricks, como o Gerenciador de Catálogos.

O que é um volume gerenciado?

Um volume gerenciado é um volume de armazenamento controlado pelo Unity Catalog, criado dentro do local de armazenamento gerenciado do esquema que contém. Consulte Especificar um local de armazenamento gerenciado no Catálogo Unity.

Os volumes gerenciados permitem 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 o acesso a arquivos para dados em volumes gerenciados é feito por meio de caminhos gerenciados pelo Unity Catalog.

O que é um volume externo?

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

O Unity Catalog não gerencia o ciclo de vida e o layout dos arquivos em volumes externos. Quando você solta um volume externo, o Unity Catalog não exclui os dados subjacentes.

Qual caminho é usado para acessar arquivos em um volume?

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

Diagrama de modelo de objeto do Unity Catalog, focado no volume

O caminho para acessar volumes é o mesmo se você usar Apache Spark, SQL, Python ou outras linguagens e bibliotecas. Isso difere dos padrões de acesso herdados para arquivos no armazenamento de objetos vinculados a um espaço de trabalho do Azure Databricks.

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

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

O Azure Databricks também dá suporte a um esquema opcional dbfs:/ ao trabalhar com o Apache Spark, portanto, o caminho a seguir 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 objeto do Unity Catalog associados ao arquivo. Esses elementos de caminho são somente 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 Catálogo Unity.

Nota

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

Exemplo de bloco de anotações: Criar e trabalhar com volumes

O bloco de anotações a seguir demonstra a sintaxe SQL básica para criar e interagir com volumes do Catálogo Unity.

Tutorial: Bloco de anotações de volumes do catálogo Unity

Obter o bloco de notas

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ó são suportados no Databricks Runtime 13.3 LTS e superior. No Databricks Runtime 12.2 LTS e inferior, as operações em caminhos /Volumes podem ser bem-sucedidas, mas podem gravar dados em discos de armazenamento efêmeros anexados a clusters de computação em vez de persistir dados em volumes do Unity Catalog conforme o esperado.

Importante

Se você tiver dados pré-existentes armazenados em um caminho reservado na raiz DBFS, poderá arquivar um tíquete de suporte para obter acesso temporário a esses dados e movê-los para outro local.

Limitações

Você deve usar a computação habilitada para Unity Catalog para interagir com os volumes do Unity Catalog. Os volumes não suportam todas as cargas de trabalho.

Nota

Os volumes não suportam dbutils.fs comandos distribuídos aos executores.

Aplicam-se as seguintes limitações:

No Databricks Runtime 14.3 LTS e superior:

  • Em clusters de usuário único, não é possível acessar volumes de threads e subprocessos no Scala.

No Databricks Runtime 14.2 e abaixo:

  • Na computação configurada com o modo de acesso compartilhado, não é possível usar UDFs para acessar volumes.
    • Python ou Scala têm acesso ao FUSE a partir do driver, mas não de executores.
    • O código Scala que executa operações de E/S pode ser executado no driver, mas não nos executores.
  • Na computação configurada com o modo de acesso de usuário único, não há suporte para FUSE no Scala, código Scala IO acessando dados usando caminhos de volume ou UDFs Scala. UDFs Python são suportados no modo de acesso de usuário único.

Em todas as versões suportadas do Databricks Runtime:

  • UDFs do Unity Catalog não suportam o acesso a caminhos de arquivos de volume.

  • Não é possível acessar volumes de RDDs.

  • Não é possível usar o spark-submit com JARs armazenados em um volume.

  • Não é possível definir dependências para outras bibliotecas acessadas por caminhos de volume dentro de uma roda ou arquivo JAR.

  • Não é possível listar objetos do Unity Catalog usando os /Volumes/<catalog-name> padrões or /Volumes/<catalog-name>/<schema-name> . Você deve usar um caminho totalmente qualificado que inclua um nome de volume.

  • O ponto de extremidade DBFS para a API REST não suporta caminhos de volumes.

  • Os volumes são excluídos dos resultados da pesquisa global no espaço de trabalho do Azure Databricks.

  • Não é possível especificar volumes como destino para a entrega de logs de cluster.

  • %sh mv não é suportado para mover ficheiros entre volumes. Use dbutils.fs.mv ou %sh cp em vez disso.

  • Não é possível criar um sistema de arquivos Hadoop personalizado com volumes, o que significa que o seguinte não é suportado:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Os volumes não estão disponíveis em regiões do Azure Government ou espaços de trabalho com conformidade com FedRAMP.

  • Você deve usar o formato de caminho com um dbfs:/ esquema no painel de configuração da biblioteca do Azure Data Factory. Por exemplo, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.