4
respostas

[Bug] Erro dbutils.fs.mount para ler pastas da azure

Estou tentando fazer o processo de montagem das pastas do azure com scala conforme orienta o curso, mas copiei o código da documentação, alterei os dados de aplicativo, diretório e credenciais, mas ao executar ele dá o erro abaixo:

java.lang.UnsupportedOperationException: Managing DBFS mounts is not supported on this type of compute resource. Use Unity Catalog Volumes or External Locations instead.

tentei fazer o processo usando o código python da documentação e aparece o erro abaixo:

Py4JError: ('dbutils.fs.mount requires a dedicated cluster.\npy4j.security.Py4JSecurityException: Method public com.databricks.backend.daemon.dbutils.DBUtilsCore.mount() is not whitelisted.',)

O código em scala utilizado foi:

val configs = Map(
"fs.azure.account.auth.type" -> "OAuth",
"fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id" -> "",
"fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="",key=""),
"fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com//oauth2/token")
// Optionally, you can add to the source URI of your mount point.
dbutils.fs.mount(
source = "abfss://@.dfs.core.windows.net/",
mountPoint = "/mnt/",
extraConfigs = configs)

O que pode estar acontecendo?

4 respostas

Oi, Guilherme! Tudo bem?

Esse erro java.lang.UnsupportedOperationException: Managing DBFS mounts is not supported on this type of compute resource. Use Unity Catalog Volumes or External Locations instead que você encontrou ao tentar usar o dbutils.fs.mount está relacionado ao tipo de cluster que está sendo utilizado no seu ambiente.

A mensagem indica que seu cluster não suporta operações de montagem de arquivos (mount). Isso pode acontecer, por exemplo, se estiver usando:

  • Clusters do tipo SQL ou compartilhado
  • Clusters com Unity Catalog habilitado (com permissões mais restritivas)
  • Ambientes com políticas de segurança que desativam o mount()

Além disso, o errodbutils.fs.mount requires a dedicated cluster... is not whitelisted reforça essa limitação. Ou seja, o método mount() foi bloqueado por questões de segurança e governança de dados.

Para saber um pouco mais sobre deixo o link da documentação abaixo:

Então abaixo deixo alguns passos para identificar a causa do problema e sugestões:

  1. Verifique se está utilizando um cluster do tipo All-Purpose com permissões completas.
  2. Se estiver usando um workspace com Unity Catalog, o recomendado é utilizar Volumes ou External Locations, que são as práticas mais atuais e seguras.
  3. Como alternativa, você pode acessar os arquivos diretamente usando spark.read com as credenciais apropriadas, sem precisar montar a pasta.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi Monalisa,

Obrigado pelo retorno, mas infelizmente não estou conseguindo resolver isso e seguir com o curso.

Estou tendo o primeiro contato agora com o databricks e estou com bastante dificuldade em fazer essas mudanças.

Será que poderia detalhar mais o passo a passo para executar as sugestões que passou?

Agradeço bastante.

Oi Guilherme!

Para entender melhor o seu problema, peço que me retorne com as seguintes informações:

  • Link da aula/atividade em que surgiu esse erro.
  • Detalhe os passos realizados até o surgir essa mensagem de erro.

Fico no aguardo!

Oi Monalisa,

Segue o link da aula:
https://cursos.alura.com.br/course/databricks-data-factory-pipelines-nuvem/task/132003

Tudo que foi feito até os 5min de aula eu consegui fazer:
Criei a pasta, criei o notebook, criei a pasta /mnt/dados através do notebook, listei as pastas em Scala e Python, mas na hora de conectar com o Azure para listar as pastas de lá, eu não consigo avançar, aparece o erro que mencionei.

Tentei fazer o mesmo processo com o código Python da documentação mas também dá erro.

Agradeço desde já!