Apache Flink est un framework de traitement de flux open source doté de puissantes capacités de traitement de flux et par lots.
Apprenez-en davantage sur Flink sur https://flink.apache.org/
Un environnement d'exécution axé sur le streaming qui prend en charge à la fois le traitement par lots et les programmes de streaming de données
API élégantes et fluides en Java
Un environnement d'exécution qui prend en charge à la fois un débit très élevé et une faible latence des événements
Prise en charge de l'heure des événements et du traitement dans le désordre dans l'API DataStream, basée sur le modèle Dataflow
Fenêtrage flexible (heure, nombre, sessions, déclencheurs personnalisés) sur différentes sémantiques temporelles (heure de l'événement, temps de traitement)
Tolérance aux pannes avec des garanties de traitement unique
Contre-pression naturelle dans les programmes de streaming
Bibliothèques pour le traitement de graphiques (batch), l'apprentissage automatique (batch) et le traitement d'événements complexes (streaming)
Gestion de mémoire personnalisée pour une commutation efficace et robuste entre les algorithmes de traitement de données en mémoire et hors cœur
Couches de compatibilité pour Apache Hadoop MapReduce
Intégration avec YARN, HDFS, HBase et d'autres composants de l'écosystème 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 ();
Conditions préalables pour créer Flink :
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink est maintenant installé dans build-target
.
Les committers Flink utilisent IntelliJ IDEA pour développer la base de code Flink. Nous recommandons IntelliJ IDEA pour développer des projets impliquant du code Scala.
Les exigences minimales pour un IDE sont :
L'IDE IntelliJ prend en charge Maven dès le départ et propose un plugin pour le développement Scala.
Consultez notre guide de configuration d’IntelliJ pour plus de détails.
REMARQUE : d'après notre expérience, cette configuration ne fonctionne pas avec Flink en raison de déficiences de l'ancienne version d'Eclipse fournie avec Scala IDE 3.0.3 ou d'incompatibilités de version avec la version Scala fournie dans Scala IDE 4.4.1.
Nous vous recommandons d'utiliser IntelliJ à la place (voir ci-dessus)
N'hésitez pas à demander !
Contactez les développeurs et la communauté sur les listes de diffusion si vous avez besoin d'aide.
Ouvrez un problème si vous trouvez un bug dans Flink.
La documentation d'Apache Flink se trouve sur le site : https://flink.apache.org ou dans le répertoire docs/
du code source.
Il s'agit d'un projet open source actif. Nous sommes toujours ouverts aux personnes qui souhaitent utiliser le système ou y contribuer. Contactez-nous si vous recherchez des tâches de mise en œuvre correspondant à vos compétences. Cet article décrit comment contribuer à Apache Flink.
La plupart des connecteurs Flink ont été externalisés vers des dépôts individuels sous Apache Software Foundation :
Apache Flink est un projet open source de The Apache Software Foundation (ASF). Le projet Apache Flink est issu du projet de recherche Stratosphere.