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.
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.
Criar alguns recursos no ambiente Microsoft Azure para manipulação dos dados.
• 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.
• 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.
Crie uma aplicação no Azure Active Directory.
• 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.
• 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).
• 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.
• 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.
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.
• 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.
• 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".
Importação dos dados - Data Lake -> Databricks.
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.
Faça algumas transformações nesses dados/schema utilizando PySpark.
• Datatypes das colunas antes da alteração
• Comando para alteração de DataType.
Crie uma base de dados com Spark SQL e Persista uma tabela gerenciada.
Faça a ingestão desses dados para uma tabela no Azure SQL Server.
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.
É 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.
Faça a integração do Databricks com o Power BI.
8.1. Colocando as informações necessárias. (HostName e HTTP são encontrados no Cluster Databricks -> JDBC/ODBC.
Mini projeto feito para prática e estudo, toda dica será sempre bem vinda!