2017-06-23 5 views
0

私は非常に Flinkに新規です。私はドキュメンテーションを読み、いくつかのサンプルコードで試しましたが、私の要求を開始するのに苦労しています。Flink:イベントにウィンドウ付き集計を追加する

Flinkを使用して、トランザクション監視アプリケーションの一部としてウィンドウ付き集約を維持したいとします。これらはスライディングウィンドウの定義を使用します。たとえば、「過去5日間の現金取引の総額」となります。 1.ヒストリカル集計とビルディングウィンドウを読み取ってトランザクション処理を準備する 2.新しいトランザクションごとに: a。新しいトランザクションデータ でウィンドウ化された集約を更新します。受信タイムスタンプと一致するウィンドウを見つけて、トランザクションに集計値を追加します。 c。

入ってくるすべてのトランザクションについて、元のトランザクションフィールドと集計を含む1つの出力のみが必要になります(唯一の出力)。

ウィンドウアサイナを作成するコードと、集計を徐々に維持するコードの作成方法を参照してください。私は元のトランザクションレコードにこれを戻して、トランザクション日付スタンプと一致するウィンドウから集計値をどのように追加するのか分かりません。これは私に何らかの形で参加しているようですが、Flinkで実装する方法はわかりません。

私は、上記のデータフローの「結合」部分から私を始めるために、単純なコード(または擬似コード)で返信できることを期待しています。明確にする必要がある場合は、私にお知らせください。

答えて

0

ウィンドウをトランザクションに一致させる方法は完全にはわかりませんが、一般的にはウィンドウの集約とトランザクションをCoFlatMapにストリームすることができます。それらに参加してください。管理されたキー付き状態を使用してウィンドウ化された集約を格納し、トランザクションに参加させることができます。

トランザクションは、アウト・オブ・オーダーであり、あなたが時間をより慎重になる必要がある場合、あなたは(違いはCoProcessFunctionあなたはタイマーサービスにアクセスすることができますということでCoProcessFunction代わりのCoFlatMapを使用して見てする必要がある可能性がある場合)。タイマーを使用して、もはや関連性のないキーの期限切れ状態をクリアする必要がある場合は、CoProcessFunctionを使用する必要があります。

FlinkトレーニングにはLow-latency, Deterministic, Event Time Joinの実装に関する練習が含まれていますが、これは必要に応じて必要以上に複雑な場合があります。

+0

ありがとうございました。私は取引のエンティティキー(口座番号など)に参加する予定です。次に、トランザクション時間がどのウィンドウの開始/終了日時かを判断して、追加する集計を選択します。 –

関連する問題