O objetivo deste projeto foi aplicar os conhecimentos nas ferramentas da plataforma Azure, suas aplicações e integrações.
O projeto foi desenvolvido utilizando um dataset da plataforma Kaggle, que contém dados sobre desmatamentos, queimadas e fenômenos naturais que afetaram o Brasil ao longo do tempo.
Foi realizado o upload dos arquivos CSV contidos nesse dataset para a pasta "data" deste repositório do GitHub.
A partir daí, utilizei o Azure Data Factory para criar um novo pipeline que realizasse a integração e obtenção dos arquivos. Esses arquivos foram alocados em diretórios previamente criados no Azure Data Lake Gen2. Após isso, foram realizadas algumas transformações nos dados por meio do Azure Databricks, utilizando Pyspark. Os dados com as devidas transformações foram então devolvidos ao Data Lake e, posteriormente, foi criado um novo workspace no Azure Synapse, onde os dados foram utilizados para criar um banco de dados.
- Crie um novo Storage Account. As configurações utilizadas foram as padrão, com a seleção da opção Habilitar Name pace Hierárquico, para melhor organização dos arquivos.
Habilitando namespace hierárquico:
- Dentro do container, crie duas pastas. No meu caso, criei duas pastas: raw-data receberá os dados crus, e transformed-data, que receberá os dados após a transformação.
- Agora, crie um novo Registro de App, buscando pelo recurso Registros de Aplicativo. Isso gerará credenciais, que usaremos posteriormente em processos de autenticação. Salve o Application Client ID e o Directory ID que serão exibidos.
- Posteriormente, ainda no serviço de Registros de Apps, na aba à esquerda, selecione a opção Certificados e Segredos, crie um novo segredo do cliente. Copie o valor da Secret Key que será gerado.
- Volte no seu container do Storage Account, e nas propriedades, selecione (IAM) Controle de Acesso. Clique em "Adicionar Atribuição de Função". Será aberta uma lista com diversas configurações. Selecione "Colaborador de Dados do Storage Blob" ou "Storage Blob Data Contributor"(em inglês).Essa opção cncede permissões para acessar e gerenciar dados dentro do contêiner de Blob Storage, que permitirá, dentre outras coisas, a leitura e gravação de dados.
- Selecione a opçao de avançar e depois "Atribuir Acesso a". No campo de busca, digite o nome que foi dado ao seu App anteriormente, realize a seleção e selecione "Examinar + Atribuir".
- O container está pronto para receber os dados.
- Agora vamos criar um data factory. Busque pelo serviço no Azure e selecione a opção de criar um novo Data Factory. As configurações padrão podem ser utilizadas.
- Acesse a Data Factory criada e na aba de ferramentas, selecione a opção Autor > Pipelines. Selecione então a opção Mover e Transfomar > Copiar Dados. Arraste o ícone para a área de trabalho.
- Nas propriedades do Copiar Dados, selecione a opção "Origem". Será aberto um menu, com diversas opções de serviços para ingestão de dados. Busque por HTTP, pois iremos utilizar a RAW URL dos arquivos no GITHUB. Selecione o tipo de arquivo (estamos usando CSV) e selecione a opção de criar um serviço vinculado.
- Configure o Serviço Vinculado: altere o nome, insira a URL e selecione o tipo de autenticação como "Anônimo".
- Após realizar todas as configurações, selecione "ok"
- Agora você deve configurar o coletor, que definirá o destino dos dados. Selecione o conjunto de dados com que está trabalhando clique na opção "Novo".
- Será aberto um outro menu para escolha dos serviços. Selecione o Azure Data Lake Gen2, e criaremos um novo serviço utilizando o Data Lake no Azure Storage criado previamente.
- Preencha o diretório e no último campo, o nome que será dado ao arquivo extraído.
- Valide as configurações realizadas e repita o procedimento para os demais arquivos. Após o pipeline rodar, os arquivos devem ter sido direcionados ao container com sucesso, na pasta selecionada.
- Na sequencia, busque pelo serviço Azure Data Bricks e crie um novo Workspace. As configurações podem ser padrão.
- Inicie o Work Space. Uma vez dentro do workSpace do Data Bricks, crie um novo node (Compute), necessário para rodar os scripts.
-
Após o node estar up, crie um novo notebook clicando em novo.
-
Com o notebook aberto, inicie as configurações que permitirão acesso aos arquivo no Data Lake.
-
Se certifique de preencher:
-- Client id -- Key id -- Directory -- Nome do seu container e storage account -
Abaixo está o script utilizado. Copie e cole no seu notebook, substituindo os dados pelos necessários.
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "SEU CLIENT ID",
"fs.azure.account.oauth2.client.secret": 'SUA KEY ID',
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/SEU DIRECTORY ID/oauth2/token"}
- Monte um diretório para que o Databricks possa realizar o acesso e manipulação dos arquivos. Altere os dados conforme o necessário:
mount_point = "/mnt/NOMEIE-SEU-DIR", #NOMEIE O SEU DIRETÓRIO
extra_configs = configs)<br>
- Após rodar esse script, valide o acesso:
mount_point = "/mnt/NOME-DO-SEU-DIR",
extra_configs = configs)<br>
-
Após isso, você poderá executar as transformações e operações necessárias nos dados. As transformações realizadas neste projeto se encontram no script abaixo, utilizando PySpark:
-
Por fim, os dados moficados foram salvos usando o script abaixo:
#Repartition = indica em quantas partes o arquivo deve estar dividido, uma vez que arquivos de operações que envolvem bigdata podem necessitar de várias repatições para melhor processamento.
#A linha é composta por nome-do-df.repartition(1).write.mode("overwrite").option("header","true").csv("/mnt/NOME-DIR-MONTADO/NOME-PASTA-DESTINO-DATA-LAKE/NOME-ARQUIVO-FINAL")<br>
elnino.repartition(1).write.mode("overwrite").option("header","true").csv("/mnt/amazondb/transformed-data/elnino")
amazon_deforestation.repartition(1).write.mode("overwrite").option("header","true").csv("/mnt/amazondb/transformed-data/amazon_deforestation")
amazon_fires.repartition(1).write.mode("overwrite").option("header","true").csv("/mnt/amazondb/transformed-data/amazon_fires")<br>
- Os dados foram salvos no diretório "transformed_data", do container.
- Agora, crie um novo workspace no Azure Synapse. Mantenha as configurações padrão e escolha o armazenamento na Storage Account criada anteriormente.
-
Com o synapses ativo, crie um novo banco de dados selecionando "Banco de Dados Lake" e selecione a opção de criar uma nova tabela de data lake.
-
Preencha os campos solicitados com o nome da tabela, serviço vinculado default e o diretório para o arquivo com os dados que popularão a tabela. Neste caso, será usado o arquivo da pasta transformed-data, destino dos arquivos que foram transformados usando o Azure Data Bricks.
- Clique em continuar e nas propriedades adicionais, certifique-se de selecionar a opção "Inferir nomes de coluna", para a primeira linha.
- Ao final, publique as alterações.
- Clicando com o botao esquerdo do mouse no símbolo da database, selecione a opção de criar uma nova consulta SQL.
- Algumas das consultas que podemos realizar se encontram em consultadados.sql