Apache Flink は、強力なストリーム処理機能とバッチ処理機能を備えたオープンソースのストリーム処理フレームワークです。
Flink の詳細については、https://flink.apache.org/ をご覧ください。
バッチ処理とデータ ストリーミング プログラムの両方をサポートするストリーミング ファーストのランタイム
Java のエレガントで流暢な API
非常に高いスループットと低いイベント遅延を同時にサポートするランタイム
Dataflow モデルに基づいた、DataStream API でのイベント時間とアウトオブオーダー処理のサポート
さまざまな時間セマンティクス (イベント時間、処理時間) にわたる柔軟なウィンドウ処理 (時間、カウント、セッション、カスタム トリガー)
1 回限りの処理を保証するフォールト トレランス
ストリーミング番組における自然なバックプレッシャー
グラフ処理 (バッチ)、機械学習 (バッチ)、および複雑なイベント処理 (ストリーミング) 用のライブラリ
カスタムメモリ管理により、メモリ内データ処理アルゴリズムとコア外データ処理アルゴリズム間の効率的かつ堅牢な切り替えが可能
Apache Hadoop MapReduce の互換性レイヤー
YARN、HDFS、HBase、および 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 ();
Flink を構築するための前提条件:
git clone https://github.com/apache/flink.git
cd flink
./mvnw clean package -DskipTests # this will take up to 10 minutes
Flink がbuild-target
にインストールされるようになりました。
Flink コミッターは IntelliJ IDEA を使用して Flink コードベースを開発します。 Scala コードを含むプロジェクトの開発には IntelliJ IDEA をお勧めします。
IDE の最小要件は次のとおりです。
IntelliJ IDE は、すぐに Maven をサポートし、Scala 開発用のプラグインを提供します。
詳細については、IntelliJ のセットアップ ガイドをご覧ください。
注:私たちの経験から、Scala IDE 3.0.3 にバンドルされている古い Eclipse バージョンの欠陥、または Scala IDE 4.4.1 にバンドルされている Scala バージョンとのバージョンの互換性がないため、このセットアップは Flink では動作しません。
代わりに IntelliJ を使用することをお勧めします (上記を参照)
遠慮せずに質問してください!
サポートが必要な場合は、メーリング リストの開発者やコミュニティに連絡してください。
Flink でバグを見つけた場合は、問題をオープンしてください。
Apache Flink のドキュメントは、Web サイト https://flink.apache.org またはソース コードのdocs/
ディレクトリにあります。
これはアクティブなオープンソース プロジェクトです。私たちは、このシステムを使用したい、またはシステムに貢献したいと考えている人々を常に受け入れています。あなたのスキルに合った実装タスクをお探しの場合は、お問い合わせください。この記事では、Apache Flink に貢献する方法について説明します。
ほとんどの Flink コネクタは、Apache Software Foundation の下で個々のリポジトリに外部化されています。
Apache Flink は、Apache Software Foundation (ASF) のオープンソース プロジェクトです。 Apache Flink プロジェクトは、成層圏研究プロジェクトから始まりました。