Utilizando Azure Databricks, Data Factory e Data Lake Gen2 (Passo a Passo)

Danilo Freitas
6 min readJul 11, 2023

Precisa montar os seus arquivos do Azure Data Lake Gen2 no Azure Databricks?

Necessita construir um Pipeline no Azure Data Factory utilizando o Notebook do Azure Databricks?

Neste artigo irei apresentar de forma prática a configuração do seu ambiente Azure Databricks, Azure Data Lake Gen2 e Azure Data Factory (Inclusive para quem possui a versão Free da Subscription).

Um pouco sobre a Azure Databricks

O Azure Databricks é um serviço de processamento de Big Data na nuvem, oferecido por uma parceria entre a Microsoft e a Databricks. Nela está presente um ambiente baseado em Spark com computação distribuída (clusterização), na qual é possível realizar a manipulação/transformação dos dados por meio de uma interface de Notebook.

Graças a integração com a Azure é possível conectar com diversas features disponíveis como a Azure Data Factory, Blob Storage e Data Lake. Essa integração entre esses serviços será apresentado por este artigo 😊.

Passo a Passo

Criação Do Azure Databricks Workspace

A primeira etapa consiste na criação do Databricks Workspace, ambiente na qual iremos criar o nosso Notebook e o Cluster para o processamento do nosso código PySpark.

Criação Do Azure Databricks Cluster

Para a verificação da montagem do Data Lake Storage com o ambiente do Databircks é necessário criar um Cluster. Por ser um ambiente de desenvolvimento/teste o Cluster pode ser configurado como Single Node.

Montagem Do Azure Data Lake Storage No Azure Databricks

Criação do App Registration no Azure Active Directory

Para a montagem do Azure Data Lake Storage é necessários alguns permissionamentos que devem ser realizados no Azure Active Directory.

  1. Primeiramente deve ser criado um novo App Registration em App registrations => New Registration

2. Deve ser criado um nome e selecionado o tipo de conta suportada (Diretório padrão only — Single tenant)

3. Copiar algumas informações essenciais para a montagem

Application (client) ID: 
Directory (tenant) ID:
Secret:

O Application (client) ID e o Directory (tenant) ID estão localizados na Overview do App Registrations.

A Secret Key deve ser criada em Certificates and Secrets.

Liberação de acesso RBAC do Storage Account

Para que a montagem seja realizada em nosso Azure Databricks é necessário adicionar um novo controle de acesso (IAM) no Storage Account desejado.

A Role selecionada deve ser a Storage Blob Data Contributor.

Em Members deve ser selecionado o App Registration criado na etapa anterior.

Criação do Notebook com a montagem dos arquivos do Azure Data Lake

Agora com todas as etapas efetuadas é necessário inserir as configurações com as chaves no código abaixo:

configs = {"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": "<application-id>",
"fs.azure.account.oauth2.client.secret": "<service-credential>",
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}
  • <application-id> = Application (client) ID
  • <service-credential> = Secret
  • <directory-id> = Directory (tenant) ID

A montagem dos arquivos do Azure Data Lake devem ser realizados com o seguinte código:

dbutils.fs.mount(
source = "abfss://<container_name>@<storage account name>.dfs.core.windows.net/",
mount_point = "/mnt/<storage account name>/raw",
extra_configs = configs)
  • <container_name> = Nome do Container
  • <storage account name> = Nome do Storage Account

Caso a Subscription da Azure em uso não permita o registro no App Registration. Uma alternativa é inferir o Storage Account Name e o Storage Account Key, como abaixo:

storage_account_name = ""
storage_account_key = ""


spark.conf.set(
f"fs.azure.account.key.{storage_account_name}.dfs.core.windows.net",
f"{storage_account_key}")

df = spark.read.csv(f"abfss://{container_name}@{storage_account_name}.dfs.core.windows.net", sep=r'', header=True)
  • storage_account_key = Deve-se acessar o Access Keys do Storage Account para obter

Criação Da Pipeline No Azure Data Factory Do Notebook Do Azure Databricks

Agora basta entrarmos na Lauch do Data Factory e criarmos a Pipeline.

Criação da Pipeline Databricks

Selecione a criação de uma nova pipeline e escolha a opção Databricks/Notebook.

Configuração — Linked Service

Nas configurações é necessário criar um novo Linked Service com o Notebook do Databircks.

Nas configurações do New Linked Service é necessário criar o Access Token no Databricks. Seguindo as etapas no Workspace do Databricks:

  1. Acessar o User Settings
  2. Clicar em Generate New Token
  3. Criar o Token e gurada-lo

Nas configurações do New Linked Service deve-se:

  1. Criar o Nome
  2. Selecionar o Azure Subscription
  3. Selecionar o Databricks workspace desejado
  4. Colar o Token criado anteriormente no Databricks
  5. Selecionar a versão do Cluster
  6. Selecionar o tipo de node do Cluster

Caso a Subscription utilizada seja Free existem limitações da Quota de Cluster. Uma das alternativas é criar um Cluster no Databricks e na criação do Linked Service selecionar a opção Existing Interactive Cluster. Podendo o Cluster criado apresentar a quantidade de VMs disponíveis para a versão gratuita do Azure Subscription.

Configuração — Settings

Na configuração da Pipeline do Notebook Databricks em Settings deve ser selecionado o Notebook em que foi construído a tranformação/modelagem dos dados.

Ao final de toda a configuração do Pipeline deve-se ser realizado um Publish All.

Trigger Pipeline Databricks

Agora ao final da configuração deve-se realizar a criação de um Trigger para a orquestração da Pipeline no Data Factory.

Após a criação de um novo Trigger é possível monitorar e visualizar.

Assim terminamos a criação do Pipeline no Azure Data Factory integrado com o nosso Azure Databricks e Azure Data Lake Gen2 :)

Algum dúvida ou sugestão me encontre no Linkedin

Outros posts disponíveis no meu Medium 😊

✅Data Pipeline ETL com as principais features: Airflow, PySpark e Snowflake

✅Construção de um Data Pipeline ETL: Azure/Terraform e Databricks

✅ Delta Lakehouse na prática!

--

--

Danilo Freitas

Data Engineer | Python | PySpark | SQL | Azure | Databricks