Share via


Criar e trabalhar com volumes

Este artigo apresenta volumes, que são objetos do Unity Catalog que permitem a governança sobre conjuntos de dados não tabulares. Ele também descreve como criar, gerenciar e trabalhar com volumes.

Para obter detalhes sobre como carregar e gerenciar arquivos em volumes, consulte Carregar arquivos para um volume do Catálogo Unity e Operações de gerenciamento de arquivos para volumes do Catálogo Unity.

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 são volumes do Catálogo Unity?

Os volumes são objetos do Unity Catalog que representam um volume lógico de armazenamento em um local de armazenamento de objetos na 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.

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 para armazenar dados tabulares com o Unity Catalog.

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. 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. Consulte Qual caminho é usado para acessar arquivos em um volume?.

Quando você exclui um volume gerenciado, os arquivos armazenados nesse volume também são excluídos do locatário da nuvem dentro de 30 dias.

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. Os volumes externos permitem adicionar governança de dados do Unity Catalog aos diretórios de armazenamento de objetos na nuvem existentes. Alguns casos de uso para volumes externos incluem o seguinte:

  • Adicionando governança a arquivos de dados sem migração.
  • Governando arquivos produzidos por outros sistemas que devem ser ingeridos ou acessados pelo Azure Databricks.
  • Governando dados produzidos pelo Azure Databricks que devem ser acessados diretamente do armazenamento de objetos na nuvem por outros sistemas.

Os volumes externos devem ser diretórios dentro de locais externos regidos pelas credenciais de armazenamento do Unity Catalog. O Unity Catalog não gerencia o ciclo de vida ou o layout dos arquivos em volumes externos. Quando você solta um volume externo, o Unity Catalog não exclui os dados subjacentes.

Nota

Quando você define um volume, o acesso URI da nuvem aos dados sob o caminho do volume é regido pelas permissões do volume.

Qual caminho é usado para acessar arquivos em um 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. São automaticamente geridos e mantidos em sincronia com as entidades UC correspondentes.

Nota

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

Quais são os privilégios para volumes?

Os volumes usam o mesmo modelo de privilégio básico que as tabelas, mas onde os privilégios para tabelas se concentram em conceder acesso à consulta e manipulação de linhas em uma tabela, os privilégios para volumes se concentram em trabalhar com arquivos. Como tal, os volumes introduzem os seguintes privilégios:

Consulte Privilégios do catálogo Unity e objetos protegíveis.

Quem pode gerenciar privilégios de volume?

Você deve ter privilégios de proprietário em um volume para gerenciar privilégios de volume ou volumes de descarte. Cada objeto no Unity Catalog só pode ter uma entidade atribuída como proprietário e, embora a propriedade não seja em cascata (ou seja, o proprietário de um catálogo não se torna automaticamente o proprietário de todos os objetos desse catálogo), os privilégios associados à propriedade se aplicam a todos os objetos contidos em um objeto.

Isso significa que, para volumes do Catálogo Unity, as seguintes entidades podem gerenciar privilégios de volume:

  • O proprietário do catálogo pai.
  • O proprietário do esquema pai.
  • O dono do volume.

Embora cada objeto só possa ter um único proprietário, o Databricks recomenda atribuir a propriedade da maioria dos objetos a um grupo em vez de a um usuário individual. A propriedade inicial de qualquer objeto é atribuída ao usuário que cria esse objeto. Consulte Gerenciar a propriedade do objeto do Catálogo Unity.

Criar um volume gerido

Você deve ter as seguintes permissões para criar um volume gerenciado:

Recurso Permissões necessárias
Esquema USE SCHEMA, CREATE VOLUME
Catálogo USE CATALOG

Sql

Para criar um volume gerenciado, use a seguinte sintaxe:

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Explorador de catálogos

Para criar um volume gerenciado no Gerenciador de Catálogos:

  1. No seu espaço de trabalho do Azure Databricks, clique em Ícone do catálogoCatálogo.
  2. Pesquise ou procure o esquema ao qual você deseja adicionar o volume e selecione-o.
  3. Clique no botão Criar volume . (Você deve ter privilégios suficientes.)
  4. Insira um nome para o volume.
  5. Forneça um comentário (opcional).
  6. Clique em Criar.

Criar um volume externo

Você deve ter as seguintes permissões para criar um volume externo:

Recurso Permissões necessárias
Localização externa CREATE EXTERNAL VOLUME
Esquema USE SCHEMA, CREATE VOLUME
Catálogo USE CATALOG

Sql

Para criar um volume externo, especifique um caminho dentro de um local externo usando a seguinte sintaxe:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Explorador de catálogos

Para criar um volume externo no Gerenciador de Catálogos:

  1. No seu espaço de trabalho do Azure Databricks, clique em Ícone do catálogoCatálogo.
  2. Pesquise ou procure o esquema ao qual você deseja adicionar o volume e selecione-o.
  3. Clique no botão Criar volume . (Você deve ter privilégios suficientes.)
  4. Insira um nome para o volume.
  5. Escolha um local externo para criar o volume.
  6. Edite o caminho para refletir o subdiretório onde você deseja criar o volume.
  7. Forneça um comentário (opcional).
  8. Clique em Criar.

Solte um volume

Somente usuários com privilégios de proprietário podem soltar um volume. Consulte Quem pode gerenciar privilégios de volume?.

Use a sintaxe a seguir para soltar um volume:

DROP VOLUME IF EXISTS <volume-name>;

Quando você descarta um volume gerenciado, o Azure Databricks exclui os dados subjacentes dentro de 30 dias. Ao soltar um volume externo, você remove o volume do Catálogo Unity, mas os dados subjacentes permanecem inalterados no local externo.

Ler ficheiros num volume

Você deve ter as seguintes permissões para exibir o conteúdo de um volume ou acessar arquivos armazenados em volumes:

Recurso Permissões necessárias
Volume READ
Esquema USE SCHEMA
Catálogo USE CATALOG

Você interage com o conteúdo de volumes usando caminhos. Consulte Qual caminho é usado para acessar arquivos em um volume?.

Criar, excluir e executar outras operações de gerenciamento de arquivos em um volume

Você deve ter as seguintes permissões para executar operações de gerenciamento de arquivos em arquivos armazenados em volumes:

Recurso Permissões necessárias
Volume READ, WRITE
Esquema USE SCHEMA
Catálogo USE CATALOG

Você pode executar operações de gerenciamento de arquivos em volumes com as seguintes ferramentas:

  • O Catalog Explorer fornece muitas opções de interface do usuário para tarefas de gerenciamento de arquivos. Consulte O que é o Catalog Explorer?.
  • Comandos de utilitários fs Databricks. Consulte Utilitário do sistema de arquivos (dbutils.fs).
  • O %fs comando magic fornece a mesma funcionalidade que dbutils.fso .
  • Carregue arquivos para a interface do usuário do volume. Consulte Carregar arquivos para um volume do Catálogo Unity.
  • Comandos de código aberto, como os.listdir().
  • Alguns comandos bash são suportados. %sh cp é suportado, mas %sh mv não é.

Para obter detalhes completos sobre a interação programática com arquivos em volumes, consulte Trabalhar com arquivos em volumes do Catálogo Unity.

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 um arquivo Wheel ou 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.