Apache Flink ist ein Open-Source-Stream-Verarbeitungsframework mit leistungsstarken Stream- und Batch-Verarbeitungsfunktionen.
Erfahren Sie mehr über Flink unter https://flink.apache.org/
Eine Streaming-First-Laufzeit, die sowohl Stapelverarbeitungs- als auch Daten-Streaming-Programme unterstützt
Elegante und flüssige APIs in Java
Eine Laufzeit, die gleichzeitig einen sehr hohen Durchsatz und eine geringe Ereignislatenz unterstützt
Unterstützung für Ereigniszeit und Out-of-Order -Verarbeitung in der DataStream-API, basierend auf dem Dataflow-Modell
Flexible Fensterung (Zeit, Anzahl, Sitzungen, benutzerdefinierte Trigger) über verschiedene Zeitsemantiken (Ereigniszeit, Verarbeitungszeit)
Fehlertoleranz mit Garantien für eine exakt einmalige Verarbeitung
Natürlicher Gegendruck bei Streaming-Programmen
Bibliotheken für die Diagrammverarbeitung (Batch), maschinelles Lernen (Batch) und komplexe Ereignisverarbeitung (Streaming)
Benutzerdefinierte Speicherverwaltung für effizientes und robustes Umschalten zwischen In-Memory- und Out-of-Core-Datenverarbeitungsalgorithmen
Kompatibilitätsschichten für Apache Hadoop MapReduce
Integration mit YARN, HDFS, HBase und anderen Komponenten des Apache Hadoop-Ökosystems
// 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 ();
Voraussetzungen für den Aufbau von Flink:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink ist jetzt in build-target
installiert.
Die Flink-Committer verwenden IntelliJ IDEA, um die Flink-Codebasis zu entwickeln. Wir empfehlen IntelliJ IDEA für die Entwicklung von Projekten, die Scala-Code beinhalten.
Mindestanforderungen für eine IDE sind:
Die IntelliJ-IDE unterstützt Maven sofort und bietet ein Plugin für die Scala-Entwicklung.
Weitere Informationen finden Sie in unserem Leitfaden zum Einrichten von IntelliJ.
HINWEIS: Unserer Erfahrung nach funktioniert dieses Setup aufgrund von Mängeln der alten Eclipse-Version, die mit Scala IDE 3.0.3 gebündelt wurde, oder aufgrund von Versionsinkompatibilitäten mit der gebündelten Scala-Version in Scala IDE 4.4.1 nicht mit Flink.
Wir empfehlen stattdessen die Verwendung von IntelliJ (siehe oben)
Zögern Sie nicht zu fragen!
Kontaktieren Sie die Entwickler und die Community über die Mailinglisten, wenn Sie Hilfe benötigen.
Öffnen Sie ein Problem, wenn Sie einen Fehler in Flink finden.
Die Dokumentation von Apache Flink befindet sich auf der Website: https://flink.apache.org oder im docs/
-Verzeichnis des Quellcodes.
Dies ist ein aktives Open-Source-Projekt. Wir sind immer offen für Menschen, die das System nutzen oder dazu beitragen möchten. Kontaktieren Sie uns, wenn Sie auf der Suche nach Implementierungsaufgaben sind, die zu Ihren Fähigkeiten passen. In diesem Artikel wird beschrieben, wie Sie zu Apache Flink beitragen.
Die meisten Flink-Konnektoren wurden im Rahmen der Apache Software Foundation in einzelne Repos externalisiert:
Apache Flink ist ein Open-Source-Projekt der Apache Software Foundation (ASF). Das Apache Flink-Projekt ist aus dem Forschungsprojekt Stratosphere hervorgegangen.