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.

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.

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.

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

  • 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.

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