Skip to content

Desenvolvi a concepção do projeto por meio da união de habilidades já adquiridas com a aquisição de novos conhecimentos, utilizando tecnologias de ponta no mercado de dados, visando ampliar e aprimorar minhas competências na área.

Notifications You must be signed in to change notification settings

luccayz/dataengineer_project_003

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Data Engineer Project - Azure DataLake ETL Insights

Desenvolvi a concepção do projeto por meio da união de habilidades já adquiridas com a aquisição de novos conhecimentos, visando ampliar e aprimorar minhas competências na área.

Diagrama Abstrato do Projeto

image

Análise Geral

Neste projeto, o foco será a criação de diversos recursos dentro do ambiente da Microsoft Azure, visando otimizar e aprimorar a eficiência das operações de uma empresa em relação ao processamento e análise de dados.

Primeiramente, será implementado os dados para um Data Lake Gen2 no Microsoft Azure. Essa funcionalidade permitirá que arquivos estruturados e não estruturados sejam armazenados e gerenciados em um ambiente seguro e escalável, o Data Lake Gen2.

Em seguida, será realizada a Criação de uma aplicação no Azure Active Directory. Isso possibilitará a gestão centralizada de identidades e acesso, bem como garantirá a segurança dos serviços e recursos disponibilizados no ambiente Azure.

Uma etapa fundamental do projeto envolverá o Manuseio do ambiente do Databricks utilizando PySpark e Spark SQL. Databricks é uma plataforma de análise de dados colaborativa que permite executar o processamento distribuído através do Spark, enquanto PySpark é a interface Python para programar o Spark. Com essas ferramentas, será possível processar grandes volumes de dados e realizar análises complexas.

Outro objetivo essencial será a Conexão do Databricks com o Azure Data Lake. Isso criará um elo entre as duas tecnologias, permitindo que os dados armazenados no Data Lake sejam acessados diretamente no ambiente do Databricks para posterior processamento e análise.

O processo de "ETL (Extract, Transform and Load)" também será implementado. Essa técnica é fundamental para extrair dados de diversas fontes, transformá-los conforme as necessidades do projeto e carregá-los no destino final (no caso, o Data Lake e o Azure SQL).

A seguir, será realizada a Migração de dados para Azure SQL via JDBC. Esse procedimento possibilitará transferir os dados processados e prontos para uso para um banco de dados Azure SQL, onde poderão ser consultados e utilizados por outras aplicações e serviços.

Por fim, a Integração Databricks + Power BI será estabelecida. Power BI é uma ferramenta de visualização de dados da Microsoft, e sua integração com o Databricks permitirá criar relatórios interativos e painéis dinâmicos com base nas análises realizadas na plataforma Databricks.

Com a conclusão de todas essas etapas, a empresa terá um ambiente robusto, escalável e eficiente para processamento e análise de dados, além de contar com recursos poderosos para visualização e compartilhamento de insights através do Power BI. Esse projeto oferecerá uma solução completa para otimizar a tomada de decisões e impulsionar o sucesso do negócio por meio da análise de dados no Microsoft Azure.

Análise detalhada do passo a passo

1º Etapa

Criar alguns recursos no ambiente Microsoft Azure para manipulação dos dados.

1. Resource Group criado.

image

• No Azure, um Resource Group é um contêiner lógico que serve para agrupar recursos relacionados em uma solução. Ele pode incluir recursos como máquinas virtuais, bancos de dados, redes virtuais, contas de armazenamento e muito mais.

1.1. Storage Account criado.

image

• O Azure Storage Account é um serviço de armazenamento em nuvem altamente escalável, seguro e durável oferecido pelo Microsoft Azure. Ele é projetado para armazenar e gerenciar diferentes tipos de dados, como arquivos, imagens, vídeos, documentos, bancos de dados, entre outros.

1.2. Criação de um Container e Upload do arquivo no Azure Data Lake.

• Container criado. image

• Upload do arquivo. image

2º Etapa

Crie uma aplicação no Azure Active Directory.

2. Aplicação no Azure AD criada.

image

• Criar um registro de aplicativo (App Registration) no Azure Active Directory permite que você registre seu aplicativo para usar os recursos do Azure, como o Azure AD, o Microsoft Graph API e outros serviços do Azure.

• Ao criar um registro de aplicativo, você está definindo um objeto de serviço que pode ser usado para autenticar e autorizar solicitações de aplicativos ao seu aplicativo no Azure. Em outras palavras, um registro de aplicativo permite que você autentique usuários em seu aplicativo, obtenha tokens de acesso, gerencie permissões de API e muito mais.

2.1. Criação da chave de aplicação.

image

• Criar uma chave no Azure AD é uma forma de autenticar seu aplicativo ou serviço no Azure Active Directory.

• Quando você cria uma chave para um registro de aplicativo, o Azure gera um segredo compartilhado que pode ser usado para autenticar o aplicativo ou serviço ao acessar recursos protegidos pelo Azure AD. Essa chave é uma string de caracteres que deve ser mantida em segredo e só deve ser compartilhada com aplicativos confiáveis.

2.2. Adicionando Role Assignment ao Container (Storage Blob Data Contributor, Storage Blob Data Reader e Storage Blob Data Owner).

image

• As funções Storage Blob Data Owner, Contributor e Reader definem diferentes níveis de acesso e permissões para usuários que precisam interagir com dados armazenados em contas de armazenamento do Azure Blob. O objetivo dessas funções é fornecer controle granular sobre as ações que cada usuário pode realizar em relação aos dados, garantindo a segurança e a privacidade das informações armazenadas.

2.3. Permitindo acesso de Read e Write da chave criada para a aplicação.

image

• Ao dar permissão de leitura e gravação no Gerenciamento de ACL para um contêiner dentro do Azure, você está permitindo que os usuários gerenciem a segurança dos blobs dentro do contêiner, concedendo ou revogando permissões para outros usuários ou grupos em relação aos blobs.

3º Etapa

Manuseamento no ambiente do Databricks (Criação de conta no Databricks Community, Cluster...).

• Databricks é um ambiente de computação em nuvem projetado para simplificar o processamento de grandes volumes de dados e a análise de dados em larga escala. É uma plataforma de análise de dados que fornece uma interface colaborativa e escalável para cientistas de dados, engenheiros de dados e outros profissionais de análise de dados.

3. Conta no Databricks Community Edition criada.

image

3.1. Criando um Cluster.

image

• Um cluster Databricks é um grupo de máquinas virtuais (VMs) que trabalham juntas para processar cargas de trabalho de processamento de dados em larga escala no ambiente Databricks. Essas VMs são configuradas para executar o software do Apache Spark, que é a base do ambiente Databricks, permitindo a execução de cargas de trabalho de processamento de dados em escala.

3.2. Conexão do Databricks com o Azure Data Lake.

3.3. Conectando o Notebook ao Cluster criado.

image

3.4. Criando um ambiente para montagem da unidade de conexão com o Data Lake.

image

• O dbutils é uma biblioteca de utilidades do ambiente Databricks que fornece uma ampla gama de funções para simplificar tarefas de gerenciamento de dados e do ambiente de computação. Ele é um pacote Python personalizado que contém várias classes e funções para trabalhar com os recursos do Databricks, como sistema de arquivos, armazenamento de dados, segredos, clusters, jobs, entre outros.

• O comando "dbutils.fs.mkdirs("/mnt/ dadosdeproject003")" é usado no ambiente Databricks para criar um diretório chamado "dadosdeproject003" no local de montagem "/mnt".

• -O comando "dbutils.fs.ls("/mnt")" é usado no ambiente Databricks para listar os diretórios e arquivos no local de montagem (mount point) "/mnt".

4º Etapa

Importação dos dados - Data Lake -> Databricks.

4. Comando para conexão com o Data Lake.

image

    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 (CLIENT) ID DA APLICAÇÃO CRIADA NO AZURE AD)",
   "fs.azure.account.oauth2.client.secret": (VALUE DA KEY SECRET CRIADA NA APLICAÇÃO NO AZURE AD)",
   "fs.azure.account.oauth2.client.endpoint": "(LINK DO ENDPOINT DA APLICAÇÃO CRIADA,  OAuth 2.0 token endpoint (v1)) ",
   "fs.azure.createRemoteFileSystemDuringInitialization": "true"}


    dbutils.fs.mount(
    source = "abfss://(NOME DO CONTAINER)@(NOME DA STORAGE ACCOUNT).dfs.core.windows.net/",
    mount_point = "/mnt/(DIRETÓRIO CRIADO)",
    extra_configs = configs)

• Esse comando é usado para montar um diretório da Azure Data Lake Storage Gen2 no Databricks. Ele usa o protocolo ABFS (Azure Blob File System) para se conectar ao armazenamento na nuvem. O parâmetro configs define as configurações de autenticação e autorização, como o tipo de autenticação, o ID do aplicativo (cliente) do Azure AD, a chave secreta do aplicativo, o endpoint de autenticação OAuth 2.0 e a opção de criação de um sistema de arquivos remoto durante a inicialização. O parâmetro source especifica o nome do contêiner e o nome da conta de armazenamento, e o parâmetro mount_point especifica o diretório em que o contêiner será montado no Databricks.

4.1. Conferindo o diretório de destino.

image

5º Etapa

Faça algumas transformações nesses dados/schema utilizando PySpark.

5. Lendo arquivo que foi carregado do Data Lake para a pasta de destino no Databricks.

image

5.1. Alterando alguns DataTypes das colunas.

• Datatypes das colunas antes da alteração

image

• Comando para alteração de DataType.

image

5.2. Criação de um Dataframe com uma agregação agrupado pelo restaurant.

image

5.3. Criação de um dashboard com o Dataframe de agregação dentro do ambiente Databricks

image

6º Etapa

Crie uma base de dados com Spark SQL e Persista uma tabela gerenciada.

6. Verificando bases de dados criadas e criando base de dado (dbdbproject003), utilizando SparkSQL.

image

6.1. Persistindo uma tabela gerenciada na base de dados.

image

7º Etapa

Faça a ingestão desses dados para uma tabela no Azure SQL Server.

7. Criando tabela no Azure SQL para migração do Dataframe.

image

7.1. Lembrar de adicionar uma Firewall Rule no servidor Azure SQL!!!!

image

7.2. Criando uma conexão JDBC com o banco de dados do Azure SQL.

Para fazer isso, é necessário as seguintes informações:

• O nome do servidor do Azure SQL

• O nome do banco de dados

• O nome de usuário e senha da conta de login

O driver JDBC (Java Database Connectivity) é um software que permite a conexão de um aplicativo Java a um banco de dados por meio de uma API padrão. Ele atua como um intermediário entre o aplicativo Java e o banco de dados, permitindo a execução de consultas, inserções, atualizações e exclusões de dados no banco de dados.

    jdbc_url = "jdbc:sqlserver://{server_name}.database.windows.net:1433;database={database_name}"
    jdbc_driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_username = "<seu_username>"
    jdbc_password = "<sua_senha>"

    connection_properties = {
        "user": jdbc_username,
        "password": jdbc_password,
        "driver": jdbc_driver
    }

    jdbc_url = jdbc_url.format(server_name="<seu_server_name>.database.windows.net", database_name="<seu_database_name>")
  • Este código define as propriedades necessárias para se conectar a um banco de dados SQL Server usando o JDBC. O código cria uma URL JDBC para o banco de dados SQL Server com as informações do nome do servidor e nome do banco de dados. Além disso, define o driver JDBC necessário para se conectar ao banco de dados. Por fim, cria um dicionário com as informações de usuário e senha para a conexão e insere as informações do servidor e banco de dados na URL JDBC.

7.3. Salvando o DataFrame no banco de dados do Azure SQL.

É possível executar está tarefa utilizando o método write do DataFrame e o formato JDBC.

    df.write \
      .format("jdbc") \
      .mode("overwrite") \
      .option("url", jdbc_url) \
      .option("dbtable", "<nome_da_tabela>") \
      .option("user", jdbc_username) \
      .option("password", jdbc_password) \
      .option("driver", jdbc_driver) \
      .save()
  • Esse código é utilizado para escrever um DataFrame do Spark para uma tabela do SQL Server usando o JDBC (Java Database Connectivity). Ele define as opções de conexão, como a URL do banco de dados, a tabela de destino, as credenciais de usuário e senha, e o driver JDBC. Em seguida, ele chama a função save() para salvar os dados do DataFrame na tabela especificada. O modo overwrite indica que a tabela deve ser sobrescrita, caso já exista.

8º Etapa

Faça a integração do Databricks com o Power BI.

image

8. Executando a integração com Databricks.

image

8.1. Colocando as informações necessárias. (HostName e HTTP são encontrados no Cluster Databricks -> JDBC/ODBC.

image

8.2. Logar com a conta Databricks.

image

8.3. Selecionando tabela.

image

8.4. Dashboard criado apenas para demonstração da integração.

image

Mini projeto feito para prática e estudo, toda dica será sempre bem vinda!

About

Desenvolvi a concepção do projeto por meio da união de habilidades já adquiridas com a aquisição de novos conhecimentos, utilizando tecnologias de ponta no mercado de dados, visando ampliar e aprimorar minhas competências na área.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published