シンクについて
次の画像はFlinkの公式によるものです。赤いボックスはシンクです。リアルタイムデータは変換ステージでビジネスロジックを完了した後、ソースで始まり、シンクで終了することがわかります。したがって、シンクを使用して、コンソール出力やデータベースの保存などの計算結果を処理できます。
「フリンクのシンク戦闘」に関する一連の記事
この記事は、シンクの予備的な理解を得ることを目的とする「Flinkのシンクコンバット」の最初のパートです。基本的なAPIとaddSinkメソッドの分析と研究を通じて、以降のコーディングコンバットの強固な基盤を築くことができます。
サンプルコードから始めましょう
- 以下は単純なflinkアプリケーションコードです。赤いボックスの印刷メソッドはシンク操作です。
- 次の図は、DataStreamクラスのAPIである公式のシンクメソッドです。直接呼び出しを使用してシンクを実現できます。コード内の出力はその1つです。
- 次に、上の図のAPIのソースコードを確認します。最初にprintメソッドを確認します。DataStream.javaでは、次のように、addSinkメソッドが実際に呼び出され、入力パラメーターはPrintSinkFunctionです。
- もう1つの一般的に使用されるAPIはwriteAsTextです。ソースコードは次のとおりです。writeUsingOutputFormatメソッドが呼び出されます。
- writeUsingOutputFormatをトレースすると、addSinkも呼び出され、入力パラメーターはOutputFormatSinkFunctionであることがわかりました。
- AddSinkはprintおよびwriteAsTextの背後で呼び出されるので、一般的に使用される別のwriteAsCsvメソッドについてはどうですか?addSinkを呼び出すことは可能ですか?それと案の定、と呼ばれるようwriteAsTextオープンwriteUsingOutputFormat、およびaddSinkを呼び出しているメソッドを:
- 要約すると、データシンクのキーは、addSinkの入力パラメーター、つまりSinkFunctionインターフェイスの実装です。クラス図を通じて、一般的なシンク機能がどのように実装されているかを直感的に確認できます。
- 上の図から、抽象クラスRichSinkFunctionがさまざまなシンク機能に密接に関連していることがわかります。以下に示すように、それに焦点を当て、クラス図にメソッドシグネチャを表示する必要があります。
- 上記のように、RichSinkFunctionがコンテンツを持っていないが、それが実現さSinkFunction、継承AbstractRichFunction、それはRichFunctionとSinkFunctionこれら二つの特性の組み合わせ。
- RichFunctionの特性は、以前の「Flink DataSource Trilogy」で理解されています。これは、リソースの開閉です。
- SinkFunctionの特徴は何ですか?明らかに、これは計算結果を処理するために使用されます。クラス図は2つのinvokeメソッドを示しています。公式のPrintSinkFunction.javaを見てください。
- 次に示すように、writer.write(レコード)のソースコードはPrintSinkOutputWriter.javaにあります。
まとめ
これまでのところ、Flinkのシンクの基本的な理解があります。
- リアルタイムの計算結果(出力や永続化など)の処理を担当します。
- 主な実装方法は、DataStream.addSinkメソッドを呼び出すことです。
- さまざまなシンク機能を実現する主な方法は、addSinkメソッドの入力パラメーターによって定義されたインターフェースを実装することです。
次の章では、一緒にシンクの実際のコーディングを行ってみましょう実際の戦闘の方向:公式に提供されているシンク機能を体験し、カスタムシンク機能を実装します。