Compartilhar via


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

Volumes são objetos do Catálogo do Unity que permitem a governança de conjuntos de dados não tabulares. 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 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.

Casos de uso para volumes

A Databricks recomenda a utilização de volumes para governar o acesso a todos os dados não tabulares. Como as tabelas, volumes podem ser gerenciados ou externos.

Os casos de uso para volumes incluem:

  • Registre áreas de aterrissagem para dados brutos produzidos por sistemas externos para dar suporte ao seu processamento nos estágios iniciais de pipelines de ETL e outras atividades de engenharia de dados.
  • Registre locais de preparação para ingestão, por exemplo, usando as instruções do Carregador Automático, COPY INTO ou CTAS (CREATE TABLE AS).
  • Forneça locais de armazenamento de arquivos para cientistas de dados, analistas de dados e engenheiros de machine learning usarem como parte de sua análise exploratória de dados e outras tarefas de ciência de dados.
  • Dê aos usuários do Azure Databricks acesso a arquivos arbitrários produzidos e depositados no armazenamento em nuvem por outros sistemas, por exemplo, grandes coleções de dados não estruturados (como arquivos de imagem, áudio, vídeo e PDF) capturados por sistemas de vigilância ou dispositivos IoT ou bibliotecas de códigos (JARs e files wheels do Python) exportados de sistemas de gerenciamento de dependência local ou pipelines CI/CD.
  • Armazene dados operacionais, como arquivos de logs ou de ponto de verificação.

Importante

Não é possível registrar arquivos em volumes como tabelas no Catálogo do Unity. Os volumes destinam-se apenas ao acesso a dados baseados em caminho. Use tabelas quando quiser trabalhar com dados tabulares no Catálogo do Unity.

O que é um volume gerenciado?

Um volume gerenciado é um volume de armazenamento controlado pelo Unity Catalog criado no local de armazenamento gerenciado do esquema que o contém. Consulte Especificar um local de armazenamento gerenciado no catálogo do 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. Não é necessário 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 Catálogo do Unity.

O que é um volume externo?

Um volume externo é um volume de armazenamento controlado pelo Catálogo do Unity registrado em um diretório em um local externo usando credenciais de armazenamento administradas pelo Catálogo do Unity.

O Catálogo do Unity não gerencia o ciclo de vida e o layout dos arquivos em volumes externos. Ao remover um volume externo, o Catálogo do Unity 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 Catálogo do Unity (catalog.schema.volume):

Diagrama de modelo de objeto do Catálogo do UNity, focado em volume

O caminho para acessar os volumes é o mesmo, independentemente de você usar o Apache Spark, SQL, Python ou outras linguagens e bibliotecas. Isso difere dos padrões de acesso herdados para arquivos no armazenamento de objetos limitados a um workspace 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 oferece suporte a um esquema dbfs:/ opcional 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 objetos do Catálogo do Unity 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 do Unity.

Observação

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

Caminhos reservados para volumes

Os volumes apresentam os seguintes caminhos reservados usados para acessar volumes:

  • dbfs:/Volumes
  • /Volumes

Observação

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

Importante

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

Requisitos de computação

Ao trabalhar com volumes, você deve usar um SQL Warehouse ou um cluster executando o Databricks Runtime 13.3 LTS ou superior, a menos que você esteja usando UIs do Azure Databricks, como o Explorador de Catálogos.

Limitações

Você deve usar a computação habilitada para o Catálogo do Unity para interagir com os volumes do Catálogo do Unity. Os volumes não dão suporte a todas as cargas de trabalho.

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

Versão do Databricks Runtime Limitações
Todas as versões com suporte do Databricks Runtime
  • Os volumes não oferecem suporte a comandos dbutils.fs distribuídos para executores.
  • UDFs do Unity Catalog não dão suporte para acessar caminhos de arquivos de volume.
  • Você não pode acessar volumes de RDDs.
  • Você não pode usar a tarefa legada do spark-submit com JARs armazenados em um volume. Em vez disso, use a tarefa JAR. Consulte Tarefa JAR para trabalhos.
  • Você não pode definir dependências para outras bibliotecas acessadas por meio de caminhos de volume dentro de uma roda ou arquivo JAR.
  • Você não pode listar objetos do Catálogo do Unity 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 formulário Volumes/<catalog-name>/<schema-name>/<volume-name>. Por exemplo, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • O ponto de extremidade DBFS para a API REST não dá suporte a caminhos de volumes de dados.
  • %sh mv não há suporte para mover arquivos entre volumes. Em vez disso, use dbutils.fs.mv ou %sh cp.
  • Não é possível 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á.
  • Os volumes não estão disponíveis em regiões do Azure governamental ou em espaços de trabalho em conformidade com FedRAMP.
  • É necessário utilizar o formato de caminho com um esquema dbfs:/ no painel de configuração da biblioteca do Azure Data Factory, por exemplo, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.
14.3 LTS ou acima
  • Na computação com modo de acesso dedicado (antigo modo de acesso de usuário único), você não pode acessar volumes de threads e subprocessos no Scala.
14.2 e abaixo
  • Na computação configurada com o modo de acesso padrão (antigo modo de acesso compartilhado), você não pode usar UDFs para acessar volumes.
    • Tanto Python quanto Scala têm acesso ao FUSE a partir do driver, mas não dos 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 dedicado, não há suporte para FUSE no Scala, código de E/S do Scala que acessa dados usando caminhos de volume, ou UDFs do Scala. Os UDFs do Python têm suporte no modo de acesso dedicado.

Próximas etapas

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