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 controlam os dados tabulares, os volumes controlam os dados não tabulares de qualquer formato, inclusive estruturados, semiestruturados ou não estruturados.

A Databricks recomenda o uso de volumes para controlar o acesso a todos os dados não tabulares. Os volumes estão disponíveis em dois tipos:

  • gerenciar volumes: Para armazenamento simples Databricks-gerenciar.
  • Volumes externos: Para adicionar governança aos locais de armazenamento de objetos existentes em cloud.

Casos de uso para volumes

Os casos de uso de volumes incluem:

  • Registre áreas de destino para dados brutos produzidos por sistemas externos para apoiar seu processamento nos estágios iniciais de pipelines de ETL e outras atividades de engenharia de dados.
  • registro de locais de preparação para ingestão. Por exemplo, usando instruções do Auto Loader, COPY INTO ou CTAS (CREATE TABLE AS).
  • Fornecer locais de armazenamento de arquivos para data scientists, analista de dados e engenheiros de aprendizado de máquina usarem como parte de sua análise exploratória de dados e outras tarefas de ciência de dados.
  • Conceder aos usuários do Databricks acesso a arquivos arbitrários produzidos e depositados no armazenamento do cloud 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 arquivos de biblioteca (arquivos JARs e Python wheel ) exportados de sistemas locais de gerenciamento de dependências ou do pipeline CI/CD.
  • Armazene dados operacionais, como arquivos de registro ou checkpoint.

Para uma demonstração sobre como trabalhar com volumes, consulte Simplificar a recuperação de arquivos, imagens e dados com volumes do Unity Catalog.

important

O senhor não pode registrar arquivos em volumes como tabelas em Unity Catalog. 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.

gerenciar versus volumes externos

Gerenciar e volumes externos proporcionam experiências quase idênticas ao usar as ferramentas Databricks, UIs e APIs. As principais diferenças estão relacionadas ao local, ao ciclo de vida e ao controle do armazenamento:

Recurso

gerenciar volumes

Volumes externos

Localização de armazenamento

Criado dentro do armazenamento UC-gerenciar para o esquema

Registrado em um caminho de armazenamento de objetos cloud existente

Ciclo de vida dos dados

UC gerenciar disposição e exclusão (retenção de 7 dias na exclusão)

Os dados permanecem no armazenamento cloud quando o senhor deixa de usar o volume

Controle de acesso

Todo o acesso passa pela UC

A UC rege o acesso, mas as ferramentas externas podem usar URIs diretos

É necessária migração?

Não

Não — use os caminhos de armazenamento existentes no estado em que se encontram

Caso de uso típico

A opção mais simples para cargas de trabalho somente do Databricks

Databricks mistos e acesso a sistemas externos

Por que usar gerenciar volumes?

gerenciar volumes tem os seguintes benefícios:

  • escolha padrão para as cargas de trabalho do Databricks.
  • Não há necessidade de gerenciar manualmente as credenciais do cloud ou os caminhos de armazenamento.
  • Opção mais simples para criar rapidamente locais de armazenamento controlados.

Por que usar volumes externos?

Os volumes externos permitem que você adicione a governança de dados Unity Catalog aos diretórios de armazenamento de objetos cloud existentes. Alguns casos de uso para volumes externos incluem o seguinte:

  • Adicionar governança onde os dados já residem, sem exigir cópia de dados.
  • Arquivos de controle produzidos por outros sistemas que devem ser ingeridos ou acessados pela Databricks.
  • Dados de controle produzidos pelo Databricks que devem ser acessados diretamente do armazenamento de objetos do cloud por outros sistemas.

A Databricks recomenda o uso de volumes externos para armazenar arquivos de dados não tabulares que são lidos ou gravados por sistemas externos, além da Databricks. Unity Catalog não controla as leituras e gravações realizadas diretamente no armazenamento de objetos cloud a partir de sistemas externos, portanto, o senhor deve configurar políticas e credenciais adicionais em seu cloud account para que as políticas de governança de dados sejam respeitadas fora do Databricks.

Caminho 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 parte /<catalog>/<schema>/<volume> do caminho mapeia os três nomes de objeto do Unity Catalog para o arquivo. Esses diretórios são somente de leitura e são gerenciados automaticamente pelo site Unity Catalog. O senhor não pode criá-los ou excluí-los com o comando do sistema de arquivos.

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, abra 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, o senhor deve usar um SQL warehouse ou um cluster executando Databricks Runtime 13.3 LTS ou acima, a menos que esteja usando Databricks UIs, como o Catalog Explorer.

Limitações

O senhor deve usar Unity Catalog-enabled compute para interagir com os volumes Unity Catalog.

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

Todas as versões suportadas do Databricks Runtime

  • Os volumes não suportam o comando dbutils.fs distribuído para o 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.
  • Não é possível usar a tarefa herdada spark-submit com JARs armazenados em um volume. Em vez disso, use a tarefa JAR. Consulte JAR tarefa for Job.
  • 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")
  • %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 personalizado do Hadoop 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á.

14.3 LTS e acima

  • Em compute com o modo de acesso dedicado (antigo modo de acesso de usuário único), não é possível 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.

Próximas etapas

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