Montagem de armazenamento de objetos em cloud no Databricks

Importante

Montagens são um padrão de acesso legado. A Databricks recomenda o uso do Unity Catalog para gerenciar todo o acesso aos dados. Consulte Conectar ao armazenamento de objetos na nuvem com o Unity Catalog.

O Databricks permite que os usuários montem armazenamento de objetos na nuvem no Databricks File System (DBFS) para simplificar os padrões de acesso a dados para usuários que não estão familiarizados com conceitos de nuvem. Dados montados não funcionam com o Unity Catalog, e o Databricks recomenda migrar para o gerenciamento da governança de dados com o Unity Catalog em vez de usar montagens.

Como o Databricks monta o armazenamento de objetos em cloud?

As montagens do Databricks criam um link entre um workspace e o armazenamento de objetos em cloud, o que permite que você interaja com o armazenamento de objetos em cloud usando caminhos de arquivo familiares relativos ao sistema de arquivos do Databricks. As montagens funcionam criando um alias local no diretório /mnt que armazena as seguintes informações:

  • Localização do armazenamento de objetos em cloud.

  • Especificações do driver para conectar-se à account de armazenamento ou ao contêiner.

  • Credenciais de segurança necessárias para acessar os dados.

Qual é a sintaxe para montar o armazenamento?

O source especifica o URI do armazenamento de objetos (e pode, opcionalmente, codificar credenciais de segurança). mount_point especifica o caminho local no diretório /mnt . Algumas fontes de armazenamento de objetos suportam um argumento encryption_type opcional. Para alguns padrões de acesso, você pode passar especificações de configuração adicionais como um dicionário para extra_configs.

Observação

Databricks recomenda definir configurações específicas de Spark e Hadoop para o mount como opções usando extra_configs. Isso garante que as configurações estejam vinculadas ao mount e não ao cluster ou sessão.

dbutils.fs.mount(
  source: str,
  mount_point: str,
  encryption_type: Optional[str] = "",
  extra_configs: Optional[dict[str:str]] = None
)

Verifique com os administradores do seu workspace e de cloud antes de configurar ou alterar as montagens de dados, pois uma configuração inadequada pode fornecer acesso inseguro a todos os usuários do seu workspace.

Observação

Além das abordagens descritas neste artigo, você pode automatizar a montagem de um bucket com o provedor Databricks Terraform e databricks_mount.

Desmontar um ponto de montagem

Para desmontar um ponto de montagem, use o seguinte comando:

dbutils.fs.unmount("/mnt/<mount-name>")

Aviso

Para evitar erros, nunca modifique um ponto de montagem enquanto outros jobs estão lendo ou gravando nele. Depois de modificar uma montagem, sempre execute dbutils.fs.refreshMounts() em todos os outros clusters em execução para propagar qualquer atualização de montagem. Veja o comando refreshMounts (dbutils.fs.refreshMounts).

Acesse um bucket do GCS por meio do DBFS

Para trabalhar com montagens DBFS, o nome do seu bucket não deve conter um sublinhado. Para gravar em um bucket do GCS, você deve fornecer um ProjectId do Google Cloud para o bucket.

Você deve usar o endereço de e-mail da account de serviço ao configurar a segurança do seu cluster.

Você pode montar um bucket em O que é DBFS? A montagem é um ponteiro para uma localização no GCS, portanto, os dados nunca são sincronizados localmente.

O exemplo a seguir mostra a sintaxe básica para montar um bucket GCS:

bucket_name = "my-gcs-bucket"
mount_name = "my-mount"
dbutils.fs.mount(
  f"gs://{bucket_name}",
  f"/mnt/databricks/{mount_name}",
  extra_configs = {"fs.gs.project.id": "my-project-id"}
)
val bucket_name = "my-gcs-bucket"
val mount_name = "my-mount"
dbutils.fs.mount(
  s"gs://${bucket_name}",
  s"/mnt/databricks/${mount_name}",
  extraConfigs=Map("fs.gs.project.id" -> "my-project-id")
)