Utilizando Azure Databricks, Data Factory e Data Lake Gen2 (Passo a Passo)
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.
- 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:
- Acessar o User Settings
- Clicar em Generate New Token
- Criar o Token e gurada-lo
Nas configurações do New Linked Service deve-se:
- Criar o Nome
- Selecionar o Azure Subscription
- Selecionar o Databricks workspace desejado
- Colar o Token criado anteriormente no Databricks
- Selecionar a versão do Cluster
- 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