Transformação de dados ETL utilizando o Apache NiFi

Com a crescente geração de dados de forma contínua ao longo dos últimos anos e recentes décadas ao redor do mundo, os desafios de modelos de estruturações, armazenamento e análises de dados de inúmeras fontes têm sido continuamente estudados por pesquisadores em centros de pesquisas e laboratórios avançados de tecnologia, bem como implementados também por profissionais da iniciativa privada e departamentos de tecnologias governamentais, a exemplos de departamentos de saúde e seguridade social que tratam de gerar, armazenar e gerar insights de dados de milhões de habitantes e departamentos de segurança e justiça pública que lidam com dados sigilosos de possíveis suspeitos de crimes e vítimas, a saber.

O desafio a ser encarado pelos administradores destes dados, embora as terminologias de suas funções variem, tais como: técnico de dados, analista de dados, engenheiro de dados, arquiteto de dados, dentre outros, todos possuem em comum a disposição de garantir a combinação de técnicas para integração de dados desde a coleta ou geração dos dados em fontes diversas, pipeline de transferência desses dados dentro de um modelo infra estrutural pré-definido, armazenamento seguro e redundante, controle de acessos restrito e visualização de dados em ferramentas de BI para tomada de decisões.

Uma das técnicas utilizadas para a integração de dados e combinação de dados de diversas fontes é chamada ETL, acrônimo de Extract, Transform and Load (Extração, Transformação e Carregamento), que define por conceito o processo de retirar (extrair) de um ou mais sistemas-base, havendo conversão ou não para um formato que possa ser tratado, observado e analisado (transformar) e armazenado (carregar) em um armazém de dados (data warehouse) ou outro sistema consumidor. É uma técnica que vem sendo adotada desde os 1970 quando ganhou popularidade porque as organizações utilizavam múltiplos bancos de dados para armazenar diferentes tipos de dados e informações, assim havendo a necessidade de padronização de coleta de dados de fontes diversas, transformá-los e carregá-los. O conceito é bastante difundido na comunidade e milhares de empresas confiam no processo de forma que podem obter insights em cima da observação dos dados, tomando melhores decisões para seus negócios.

Exemplo de fluxo no Apache NiFi

O ETL vem sofrendo evolução ao longo de décadas e, além de suas mais importantes ferramentas, nos dias de hoje também suporta integração de dados em streaming data. Este suporte é um dos facilitadores para a coleta, transformação, carregamento e visualização de análises de dados em tempo real, grande parte sendo desenvolvido e evoluído pela comunidade de software livre open source com o advento crescente no mercado de soluções de big data para trabalhos de grandes cargas de dados.

As técnicas de streaming data servem para entre outras características facilitar o uso de forma rápida assim que disponível dados gerados: extraídos, transformados e carregados de forma a gerar visualizações e análises de gráficos e modelos estatísticos de dados, um exemplo atual para o uso da técnica/ferramenta de processamento em tempo real de dados é a pandemia de Covid-19 que assola globalmente a população e seus governos que correm para desenvolvimento de vacinas e/ou medicamentos que possam retardar as filas de UTIs e óbitos em casos graves de parte de sua população que teve contato com o vírus. Medidas como essa de análise pandêmica de dados sendo gerados minuto a minuto, dia após dia, durante semanas requer tomadas de decisão em tempo real das situações dos enfermos e do avanço do vírus dos grandes centros urbanos para cidades e vilarejos menores e com menos recursos, podendo fornecer aos agentes públicos e organizações de saúde mecanismos de controle de avanço e disseminação do vírus, tais como isolamento social, fechamento temporário de setores da economia não-essenciais, etc.

Uma das ferramentas de ETL utilizada em conjunto ao ecossistema de big data, ecossistema este que requer que grandes quantidades de dados, de diferentes fontes sejam extraídos, transformados e armazenados é o NiFi, ferramenta que hoje é suportada pelo projeto Apache Foundation e pela comunidade de código de software aberto, foi antes desenvolvida originalmente com o nome NiagaraFiles pela NSA (National Security Agency), agência de segurança nacional dos Estados Unidos da América. Como parte do programa de transferência de tecnologia da NSA, a tecnologia foi repassada à comunidade de código livre no de 2014.

Apache NiFi é uma ferramenta poderosa que permite que desenvolvedores, arquitetos, engenheiros e analistas de dados possam trabalhar com integração de dados dentro de um ou mais sistemas carregando o dado de uma fonte à outra manipulando o pipeline de dados em tempo real enquanto o dado é objeto de extração, transformação e carregamento. Possui características como ampla possibilidade de escalabilidade devido ao seu processamento ser distribuídos em diversos nós de computadores em um cluster, interatividade do agente de dados e provê que o agente possa analisar o ciclo de vida do dado, origem, período de tempo de processamento de cada etapa do processo e detalhamentos de mensagens de erros. É uma ferramenta gráfica que possibilita a visualização do pipeline de dados e provê ao agente de tratamento de dados a checar e trabalhar ligeiramente em um fluxo de dados em esquema “drag and drop” (arrastar e soltar) na interface manipulável.

Tela de configuração de fluxo no Apache NiFi

A interface da ferramenta é intuitiva e de fácil aprendizado sobre os conceitos básicos de processadores, grupos de processadores, conexões, labels e controladores de serviço. Exemplos a seguir:

  • Interface gráfica no esquema arraste com o mouse e solte.

Processadores de ETL no Apache NiFi

  • Processador GetFile que quando configurado busca um arquivo em uma fonte.

Detalhe de execução de fluxo no Apache NiFi

  • Ferramenta Label auxilia a localização e fácil entendimento do que aquele processador ou grupo de processadores deve fazer, facilita para desenvolvimento em equipe.

Resultado de fluxo de dados no Apache NiFi

Desde sua criação como NiagaraFiles na NSA e posteriormente com o código-fonte disponibilizado para a comunidade, a ferramenta se mostra de grande importância para o desenvolvimento de projetos de ETL e data pipelines para cargas de terabytes de dados entre sistemas diversos e podendo ser ferramenta útil para sistemas de internet das coisas IoT que está em grande crescimento.

Referências:

ETL - O que é e qual sua importância?. SAS, 2019. Disponível em: https://www.sas.com/pt_br/insights/data-management/o-que-e-etl.html

FOSNAUGHT, Heidi. Niagarafiles Keep Data Flowing. NSA/CSS, 2019. Disponível em: https://www.nsa.gov/News-Features/News-Stories/Article-View/Article/1830203/niagarafiles-keep-data-flowing