Arquivos do ADLS no Databricks

Anselmo Borges
Rescue Point
Published in
4 min readNov 17, 2022

Simples, rápido e objetivo pra eu ter uma fonte de consulta e não ter que fazer tudo na mão de novo.

Minha base de consulta que te ajuda, rs

O que preciso do lado Azure?

  • Storage account (pra você que não conhece é tipo o S3 da Amazon)
  • um App Registration (é um user de sistema criado no Azure AD)
  • uma entrada no Azure Key Vault com os dados do App Registration criado.

Como criar:

Vou criar um storage account bem simples, público mesmo de nome rescuedata01 e vou criar um container de nome dados nele. Depois vou no Azure AD e criar um app registration no meu Azure AD de nome rescue.

Criando o Storage Account:
Vou fazer uma serie de Gifs aqui em baixo porque acho mais rápido.

Bemmm mais rápido mas vou explicar
  • Criei um storage account de nome rescuedata01
  • Coloquei ele num resource group meu chamado databricks_de, mas crie o seu próprio
  • coloquei ele na região do Brasil South
  • habilitei o ADLS
  • Deixei ele publico mesmo pois é só pra testes
  • Deixei a redundância dele local mesmo

No finalzinho do Gif, após o Storage Account criado, vai ali no menu da lateral, ache container e crie o seu, o meu chamei de dados. (Não tá no Gif).

Criando o App Registry

Agora vamos criar esse cara que nada mais é que um user sistêmico, geralmente as empresas chamam de service principal, o meu vai chamar rescue, já aproveitei e criei uma secret pra ele no GIF, vamos precisar dela depois.

Criando o App Registration e a Secret

“Ah Anselmo mas você tá expondo seus dados aqui!”, não pega nada, vou apagar assim que terminar esse post.

Dessa criação vou precisar das seguintes informações:

  • Client ID: Aparece lá na tela de overview.
  • Directory ID/Tenant ID: os 2 são a mesma coisa você pega lá na tela de overview também.
  • Secret key: Quando gerei a secret copiei ela.

A autenticação por parte do Databricks usa OAUTH2 por isso vou ter que jogar essas infos que gerei numa secret no Key vault.

Criando entrada no Azure Key Vault

Criei um Azure Key Vault chamado rescuepointkv (caso não tenha crie um que é facinho de criar), nesse cara iremos colocar as 3 entradas que geramos ai em cima.

  • clientid: com a informação do client id do app registration que geramos.
  • tenantid: com a informação do tenant do domínio AD
  • secretkey: com a informação da secret que geramos para o app registration rescue lá no AD.
Criando o Key Vault e as secrets

Agora falta um último passo, atribuir o privilégio do app registration no Storage Account.

Dando os privilegios no SA

Vou dar privilégios de contributor para esse cara, mas no seu caso crie um role attribute caso seja algo especifico no seu acesso. Se liga o Gif abaixo como fazer.

Atribuindo privilégios pro App Registration no SA e no container

Note que dei privilégios para o rescue no container dados também.

Atuações no lado do Databricks

Agora que terminamos tudo do lado da Azure, vamos fazer a configuração do lado do Databricks mas vamos precisar criar uma parada lá antes, o scope. Logue no endereço a seguir substituindo o começo pelo seu https://<DATABRICKS-INSTANCE>#secrets/createScope. Segue abaixo como criar.

Criando um Scope e apontando pro Key Vault que criamos

Criei um scope chamado rescuescp que vai chamar as entradas que cadastramos no Key Vault rescuepointkv a pouco. Com ele criado vamos para o nosso código de montagem.

Montando o ADLS no DBFS

Esse pythonzinho abaixo já faz a magica acontecer, ele faz o container ADLS ser montado num ponto que chamei de “/mnt/dados” no DBFS possibilitando visualizar dentro do Databricks os dados do Storage Account que criamos.

Substitua pelos nomes dos caras que você criou no sou ambiente e boa, só pra mostrar que funciona, segue o gif abaixo.

Só pra provar que funciona

No post de hoje era isso, vou mostrar depois em outros posts como configurar essa autenticação durante a subida de um cluster colocando no config inicial do servidor e dar algumas dicas de apontamentos externos no databricks pois se uso isso pra jogar o location dos meus dados como external tables eu trago uma brecha de segurança pra dentro do Databricks.

Nos vemos nos próximos posts.
Deixa o like ae e compartilha com seu amigo(a) que tá apanhando.

Anselmo Borges.

--

--

Anselmo Borges
Rescue Point

Bigdata Engineer, Cloud Architect, Nerd, Alcoholic, Brazilian Jiujitsu Black belt and hide and seek World champion.