Apache NiFi

O Apache NiFi é um projeto de software da Apache Software Foundation, que permite a automação do fluxo de dados entre sistemas.

Pode ser comparado como uma mistura do Oracle  Goldengate e ODI, ambas ferramentas da Oracle.

O projeto é escrito usando programação baseada em fluxo e fornece uma interface de usuário baseada na web para gerenciar fluxos de dados em tempo real.
O projeto foi criado pela Agência Nacional de Segurança dos Estados Unidos (NSA) e originalmente chamado Niagrafiles. Em 2014, a NSA o lançou como software livre, através do seu programa de transferência de tecnologia.

Mais informações podem consultar no link oficial: Apache Nifi

O Apache NiFi, permite ligar há uma grande diversidade de bases de dados e outras tecnologias, desde que possuam um driver JDBC para permitir a ligação. Permite utilizar as tecnologias Hive, HDFS, Impala, Kudu e outras plataformas.

Nesta demo, utilizei o Apache NiFi para extrair dados a partir de uma BD Oracle e converter para o formato JSON e armazenar em textfile.

Ambiente:

  • 2 máquinas virtuais, 1 com a base de dados Oracle e outra com o Apache NiFi.
  • Base de dados Oracle 12c (12.1.0.2).
  • Driver JDBC, da mesma versão de base de dados.
  • Apache NiFi 1.4

Toda a lógica do Apache NiFi, é configurar processos (seja para capturar os dados ou escrever no destino, bem como realizar conversões e outros tipos de manipulações) e interligar estes processos por conexões (para isto é necessário arrastar uma seta entre um processo e o outro, para desenhar o fluxo de dados).

Vamos lá!!

1) Ecrã principal do Apache NiFi:

apache_nifi_01_ecra

2) Adicionar processo para capturar dados da BD Oracle:

Add Processor > database > QueryDatabaseTable > Add 

apache_nifi_02_add_proc_db
3) Adicionar processo para converter de Avro para JSON (utilizamos o avro na captura):

Add Processor > json > ConvertAvroToJSON > Add

apache_nifi_03_add_proc_cnv
4) Adicionar o processo para escrever o JSON em textfile:

Add Processor > put > PutFile > Add

apache_nifi_04_add_proc_file
5) Criar as ligações (arrastar a seta entre o os processos) e ficamos com o fluxo preparado.

apache_nifi_05_all_data_flow
6) Configurar a conexão a base de dados, parte 1:

  • Criar uma Pool de ligação a BD (Database Connection Pooling Service, e seguir os passos do próximo item)
  • Database Type = Oracle
  • Use Avro Logical Types = true

apache_nifi_06_add_proc_db_conf

7) Configurar a conexão a base de dados, parte 2:

  • Indicar o URL JDBC de ligação a base de dados
  • Database Driver Class Name = oracle.jdbc.OracleDriver
  • Indicar o jar que contém o driver JDBC, no parâmetro Database Driver Location(s).
  • Indicar o user/password de ligação a base de dados

apache_nifi_07_add_proc_db_conf
8) Configurar o processo de escrita em textfile:

apache_nifi_08_add_proc_file_conf
9) Iniciar todos os processos:

Botão direito > Start, para cada um dos processos.

apache_nifi_09_all_running
10) Resultado final:

Origem (BD Oracle):

apache_nifi_11_data_in_db

Destino (textfile):

apache_nifi_10_data_in_file

É uma boa alternativa e open source para a realização destas tarefas

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s