Apache Flink - Bibliotecas

Neste capítulo, aprenderemos sobre as diferentes bibliotecas do Apache Flink.

Processamento de Eventos Complexos (CEP)

FlinkCEP é uma API do Apache Flink, que analisa padrões de eventos em dados de streaming contínuo. Esses eventos são quase em tempo real, com alto rendimento e baixa latência. Esta API é usada principalmente em dados do Sensor, que vêm em tempo real e são muito complexos de processar.

O CEP analisa o padrão do fluxo de entrada e dá o resultado muito em breve. Ele tem a capacidade de fornecer notificações e alertas em tempo real caso o padrão do evento seja complexo. O FlinkCEP pode se conectar a diferentes tipos de fontes de entrada e analisar padrões nelas.

É assim que uma arquitetura de amostra com CEP se parece -

Os dados do sensor virão de diferentes fontes, o Kafka atuará como uma estrutura de mensagens distribuída, que distribuirá os fluxos para o Apache Flink e o FlinkCEP analisará os padrões de eventos complexos.

Você pode escrever programas no Apache Flink para processamento de eventos complexos usando a API Pattern. Ele permite que você decida os padrões de eventos a serem detectados nos dados de fluxo contínuo. Abaixo estão alguns dos padrões CEP mais comumente usados ​​-

Início

É usado para definir o estado inicial. O programa a seguir mostra como ele é definido em um programa Flink -

Pattern<Event, ?> next = start.next("next");

Onde

É usado para definir uma condição de filtro no estado atual.

patternState.where(new FilterFunction <Event>() {  
   @Override 
      public boolean filter(Event value) throws Exception { 
   } 
});

Próximo

É usado para anexar um novo estado de padrão e o evento correspondente necessário para passar o padrão anterior.

Pattern<Event, ?> next = start.next("next");

Seguido por

É usado para anexar um novo estado de padrão, mas aqui outros eventos podem ocorrer b / w dois eventos correspondentes.

Pattern<Event, ?> followedBy = start.followedBy("next");

Gelly

A API Graph do Apache Flink é Gelly. Gelly é usado para realizar análises gráficas em aplicativos Flink usando um conjunto de métodos e utilitários. Você pode analisar gráficos enormes usando a API Apache Flink de maneira distribuída com o Gelly. Existem outras bibliotecas de gráficos também como o Apache Giraph para o mesmo propósito, mas como o Gelly é usado no topo do Apache Flink, ele usa uma API única. Isso é muito útil do ponto de vista de desenvolvimento e operação.

Vamos executar um exemplo usando a API Apache Flink - Gelly.

Em primeiro lugar, você precisa copiar 2 arquivos jar Gelly do diretório opt do Apache Flink para o diretório lib. Em seguida, execute flink-gelly-examples jar.

cp opt/flink-gelly* lib/ 
./bin/flink run examples/gelly/flink-gelly-examples_*.jar

Vamos agora executar o exemplo do PageRank.

O PageRank calcula uma pontuação por vértice, que é a soma das pontuações do PageRank transmitidas nas bordas. A pontuação de cada vértice é dividida igualmente entre as bordas externas. Vértices de alta pontuação são vinculados a outros vértices de alta pontuação.

O resultado contém o ID do vértice e a pontuação do PageRank.

usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options] 

./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print