2017-07-13 1 views
1

私はデータストリームとしてカフカのトピックを消費しており、FlatMapFunctionを使用してデータを処理しています。この処理は、ストリームから得られるインスタンスを豊富にすることにより、データベースから取得したデータを他のデータベースで取得して出力を収集するが、それが最良のアプローチではないと感じるほどのデータで構成されます。Flink AppでFlatMapFunction内のデータベースにアクセスできますか?

ドキュメントを読む私はデータベースクエリからDataSetを作成できますが、バッチ処理の例しか見ていません。

これを達成するために、DataStreamとDataSetでマージ/リダクション(または他の操作)を実行できますか?

データベースに直接アクセスする代わりに、データセットを使用してパフォーマンスを改善できますか?

答えて

1

FlinkのDataStream APIを使用してこのような豊富化を達成するには、さまざまな方法があります。

(1)一度にすべてのデータをフェッチしたい場合は、open()メソッドでクエリを実行するステートフルなRichFlatmapFunctionを使用できます。

(2)ストリーム要素ごとにクエリを実行する場合は、FlatmapFunctionで同期をとることも、よりパフォーマンスの高い方法でAsyncIOを見ることもできます。

(3)パフォーマンスを最適化するには、外部データベースから最新の値を取得し、データベース変更ストリームのストリーミングとCoProcessFunctionを使用したスト​​リーミング結合を参照してください。 http://debezium.io/のようなものがここで便利です。

関連する問題