Apache Flink é uma estrutura de processamento de fluxo de código aberto com poderosos recursos de processamento de fluxo e lote.
Saiba mais sobre o Flink em https://flink.apache.org/
Um tempo de execução de streaming que suporta programas de processamento em lote e streaming de dados
APIs elegantes e fluentes em Java
Um tempo de execução que suporta taxa de transferência muito alta e baixa latência de eventos ao mesmo tempo
Suporte para horário de evento e processamento fora de ordem na API DataStream, com base no modelo Dataflow
Janelas flexíveis (tempo, contagem, sessões, gatilhos personalizados) em diferentes semânticas de tempo (tempo do evento, tempo de processamento)
Tolerância a falhas com garantias de processamento exatamente uma vez
Contrapressão natural em programas de streaming
Bibliotecas para processamento de gráficos (lote), aprendizado de máquina (lote) e processamento de eventos complexos (streaming)
Gerenciamento de memória personalizado para alternância eficiente e robusta entre algoritmos de processamento de dados na memória e fora do núcleo
Camadas de compatibilidade para Apache Hadoop MapReduce
Integração com YARN, HDFS, HBase e outros componentes do ecossistema Apache Hadoop
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
DataStreamSource < String > text = env . socketTextStream ( host , port );
DataStream < WordWithCount > windowCounts = text
. flatMap (
( FlatMapFunction < String , String >) ( line , collector )
-> Arrays . stream ( line . split ( " \ s" )). forEach ( collector :: collect )
). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWithCnt -> wordWithCnt . word )
. window ( TumblingProcessingTimeWindows . of ( Duration . ofSeconds ( 5 )))
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
}
// pojo class WordWithCount
public class WordWithCount {
public String word ;
public int count ;
public WordWithCount () {}
public WordWithCount ( String word , int count ) {
this . word = word ;
this . count = count ;
}
}
// main method
StreamExecutionEnvironment env = StreamExecutionEnvironment . getExecutionEnvironment ();
env . setRuntimeMode ( RuntimeExecutionMode . BATCH );
FileSource < String > source = FileSource . forRecordStreamFormat ( new TextLineInputFormat (), new Path ( "MyInput.txt" )). build ();
DataStreamSource < String > text = env . fromSource ( source , WatermarkStrategy . noWatermarks (), "MySource" );
DataStream < WordWithCount > windowCounts = text
. flatMap (( FlatMapFunction < String , String >) ( line , collector ) -> Arrays
. stream ( line . split ( " \ s" ))
. forEach ( collector :: collect )). returns ( String . class )
. map ( word -> new WordWithCount ( word , 1 )). returns ( TypeInformation . of ( WordWithCount . class ))
. keyBy ( wordWintCount -> wordWintCount . word )
. sum ( "count" ). returns ( TypeInformation . of ( WordWithCount . class ));
windowCounts . print ();
env . execute ();
Pré-requisitos para construir o Flink:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
O Flink agora está instalado em build-target
.
Os committers do Flink usam o IntelliJ IDEA para desenvolver a base de código do Flink. Recomendamos o IntelliJ IDEA para desenvolvimento de projetos que envolvam código Scala.
Os requisitos mínimos para um IDE são:
O IDE IntelliJ oferece suporte imediato ao Maven e oferece um plugin para desenvolvimento em Scala.
Confira nosso guia de configuração do IntelliJ para obter detalhes.
NOTA: Pela nossa experiência, esta configuração não funciona com o Flink devido a deficiências da versão antiga do Eclipse incluída no Scala IDE 3.0.3 ou devido a incompatibilidades de versão com a versão incluída do Scala no Scala IDE 4.4.1.
Recomendamos usar o IntelliJ (veja acima)
Não hesite em perguntar!
Entre em contato com os desenvolvedores e a comunidade nas listas de discussão se precisar de ajuda.
Abra um problema se encontrar um bug no Flink.
A documentação do Apache Flink está localizada no site: https://flink.apache.org ou no diretório docs/
do código fonte.
Este é um projeto ativo de código aberto. Estamos sempre abertos a pessoas que queiram utilizar o sistema ou contribuir com ele. Contate-nos se você estiver procurando tarefas de implementação que correspondam às suas habilidades. Este artigo descreve como contribuir com o Apache Flink.
A maioria dos conectores Flink foram externalizados para repositórios individuais sob a Apache Software Foundation:
Apache Flink é um projeto de código aberto da Apache Software Foundation (ASF). O projeto Apache Flink originou-se do projeto de pesquisa Stratosphere.