Overview
This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.

概念 #

ハンズオントレーニングは、Flink APIの基礎となるステートフルでタイムリーなストリーム処理の基礎概念を説明し、これらの仕組みがアプリケーションでどのように使われるかを例を示します。ステートフルストリーム処理は、データパイプライン & ETL のコンテキストで紹介され、耐障害性のセクションでさらに詳しく説明されます。 タイムリーなストリーム処理はストリーミング解析のセクションで紹介されています。

この_概念の詳細_のセクションでは、Flinkの構造とランタイムがこの概念をどのように実装するかをより深く理解できます。

Flink はストリーミング/バッチアプリケーションを開発するために、様々なレベルの抽象化を提供します。

Programming levels of abstraction
  • 最下位レベルの抽象化は、ステートフルでタイムリーなストリーム処理を提供するだけです。これは プロセス関数を介してデータストリーム APIに埋め込まれます。これにより、ユーザは1つ以上のストリームからのイベントを自由に処理できるようになり、一貫性のある耐障害性stateが提供されます。さらに、ユーザはイベント時間と処理時間のコールバックを登録できるため、プログラムは高度な計算を実現できます。

  • 実際には、多くのアプリケーションは上記の低レベルの抽象化を必要とせず、代わりにコア APIsデータストリーム API(制限付き/制限無しストリーム)に対してプログラムできます。これらの柔軟な API は、ユーザ指定の様々な形式の変換、結合、集約、ウィンドウ、状態など、データ処理のための共通の構成要素を提供します。 これらのAPI内で処理されるデータ型はそれぞれのプログラム言語内のクラスとして表されます。

    低レベルのProcess FunctionDataStream APIと統合されており、必要に応じて低レベルの抽象化を使えます。 DataSet API は、ループ/反復など、制限されたデータセットに対する追加のプリミティブを提供します。

  • Table APItablesを中心とした宣言型DSLであり、(ストリームを表現する場合に)テーブルを動的に変更する可能性があります。Table API は、(拡張)リレーショナルモデルに従います。テーブルには(リレーショナルデータベースと同様に)スキーマが関連付けられ、APIは選択、射影、結合、グループ化、集約などの同等のオペレーションを提供します。テーブル API プログラムは、オペレーションのコードがどのように見えるかを正確に指定するのではなく、論理 operation がすべきことを宣言的に定義します。 Table API は様々なタイプのユーザ定義 function によって拡張できますが、Core APIsよりも表現力が低く、より簡潔に使えます(記述するコードが少なくなります)。更に、Table API プログラムは実行の前に最適化ルールを適用するオプティマイザも通ります。

    テーブルとDataStream/DataSetの間でシームレスに変換できるため、プログラムでTable APIと、DataStreamDataSet APIs を混在することができます。

  • Flink によって提供される高レベルの抽象化は、SQLです。この抽象化はセマンティクスと表現の両方においてTable APIに似ていますが、プログラムをSQLクエリ表現として表します。SQL 抽象化は Table API と密接に連携し、Table APIで定義されたテーブルに対して SQL クエリを実行できます。

inserted by FC2 system