1、Flink Table API&SQL-開発基礎コードサンプルとmaven依存
目次
MAVEN依存構造
Tableプログラム依存
拡張依存
ガイド人
Apache FlinkのTable APIとSQLは、統合されたストリームとバッチに使用されます.Table APIは、ScalaおよびJava言語統合クエリーAPIであり、選択、フィルタ、接続などの関係演算子からのクエリーを非常に直感的に組み合わせることができる.Flink SQLはApache Calciteに基づいてSQL標準を実現します.入力がバッチ入力(DataSet)であるかストリーム入力(DataStream)であるかにかかわらず、この2つのインタフェースで指定されたクエリは同じ意味を持ち、同じ結果が得られます.
Table APIとSQLインタフェース、およびFlinkのDataStreamとDataSet APIは緊密に統合されています.すべてのapiとapiベースのライブラリを簡単に切り替えることができます.たとえば、CEPライブラリを使用してデータ・ストリームからモデルを抽出し、Table APIを使用してモデルを解析するか、前処理データに対してGelly graphアルゴリズムを実行する前にSQL scan、filter、aggregateバッチ・テーブルを使用します.
注意:Table APIとSQLはまだ完全に開発されていません.すべての[Table API,SQL]および[stream,batch]の組合せをサポートするものではない.
MAVEN依存構造
Flink 1から9から、Blink plannerと1.9以前の古いplannerの2つの異なるplanner実装が提供される.Plannerは演算子をFlink実行可能で最適化されたFlink jobに変換する責任を負う.この2つのPlannerには、異なる最適化ルールとruntimeクラスがあります.サポートされているプロパティセットで異なる場合もあります.
注意:生産環境ではFlink 1.9以前のplannerを推奨
すべてのTable APIとSQLコンポーネントは
古いplannerとblink plannerを切り替える方法については、//ODOを参照してください.
Tableプログラム依存
ターゲットプログラミング言語によっては、Table APIとSQLを使用してパイプを定義するために、プロジェクトにJavaまたはScala APIを追加する必要があります.
また、IDEでTable APIおよびSQLプログラムをローカルで実行する場合は、どのplannerを使用するかによって、次のいずれかの依存関係を追加する必要があります.
内部では,一部の表生態系はScalaに基づいて実現された.したがって、バッチおよびフロー・アプリケーションに次の依存項目が追加されていることを確認します.
拡張依存
Kafkaまたはユーザー定義関数のセットと相互作用するカスタムフォーマットを実装するには、SQLクライアントのJARファイルに使用できる依存関係で十分です.
現在、このモジュールには次の拡張クラスが含まれています.
Table API&SQLのコンセプトと汎用APIs
事前定義されたデータ型リストとその属性
MAVEN依存構造
Tableプログラム依存
拡張依存
ガイド人
Apache FlinkのTable APIとSQLは、統合されたストリームとバッチに使用されます.Table APIは、ScalaおよびJava言語統合クエリーAPIであり、選択、フィルタ、接続などの関係演算子からのクエリーを非常に直感的に組み合わせることができる.Flink SQLはApache Calciteに基づいてSQL標準を実現します.入力がバッチ入力(DataSet)であるかストリーム入力(DataStream)であるかにかかわらず、この2つのインタフェースで指定されたクエリは同じ意味を持ち、同じ結果が得られます.
Table APIとSQLインタフェース、およびFlinkのDataStreamとDataSet APIは緊密に統合されています.すべてのapiとapiベースのライブラリを簡単に切り替えることができます.たとえば、CEPライブラリを使用してデータ・ストリームからモデルを抽出し、Table APIを使用してモデルを解析するか、前処理データに対してGelly graphアルゴリズムを実行する前にSQL scan、filter、aggregateバッチ・テーブルを使用します.
注意:Table APIとSQLはまだ完全に開発されていません.すべての[Table API,SQL]および[stream,batch]の組合せをサポートするものではない.
MAVEN依存構造
Flink 1から9から、Blink plannerと1.9以前の古いplannerの2つの異なるplanner実装が提供される.Plannerは演算子をFlink実行可能で最適化されたFlink jobに変換する責任を負う.この2つのPlannerには、異なる最適化ルールとruntimeクラスがあります.サポートされているプロパティセットで異なる場合もあります.
注意:生産環境ではFlink 1.9以前のplannerを推奨
すべてのTable APIとSQLコンポーネントは
flink-table
or flink-table-blink Maven 。
以下に、ほとんどのプロジェクトに関連する依存関係を示します.flink-table-common:
は、カスタム関数、フォーマットなどによって表生態系の汎用モジュールを拡張する.flink-table-api-java:
Java
Table&SQL API依存(初期開発段階では推奨されていない)flink-table-api-scala:
Scala
Table&SQL API依存(初期開発段階では推奨されていない)flink-table-api-java-bridge:
Javaを使用して、DataStream/DataSet APIのTableおよびSQL APIをサポートします.flink-table-api-scala-bridge:
Scalaを使用して、DataStream/DataSet APIのTableおよびSQL APIをサポートします.flink-table-planner:
Flink 1.9 planner runtime, 。
flink-table-planner-blink:
Blink planner
flink-table-runtime-blink:
Blink runtime
flink-table-uber:
は、上のAPIモジュールおよび古いplannerをTableおよびSQL APIの使用例のリリースにパッケージ化する.デフォルトではuber JARファイルFlink-table-*.JArはFlinkリリースの/libディレクトリにあります.flink-table-uber-blink:
は、上のAPIモジュールおよびBlink固有のモジュールをTableおよびSQL API用例のリリースにパッケージ化する.デフォルトではuber JARファイルFlink-table-blink-*.JArはFlinkリリースの/libディレクトリにあります.古いplannerとblink plannerを切り替える方法については、//ODOを参照してください.
Tableプログラム依存
ターゲットプログラミング言語によっては、Table APIとSQLを使用してパイプを定義するために、プロジェクトにJavaまたはScala APIを追加する必要があります.
org.apache.flink
flink-table-api-java-bridge_2.11
1.9.0
provided
org.apache.flink
flink-table-api-scala-bridge_2.11
1.9.0
provided
また、IDEでTable APIおよびSQLプログラムをローカルで実行する場合は、どのplannerを使用するかによって、次のいずれかの依存関係を追加する必要があります.
org.apache.flink
flink-table-planner_2.11
1.9.0
provided
org.apache.flink
flink-table-planner-blink_2.11
1.9.0
provided
内部では,一部の表生態系はScalaに基づいて実現された.したがって、バッチおよびフロー・アプリケーションに次の依存項目が追加されていることを確認します.
org.apache.flink
flink-streaming-scala_2.11
1.9.0
provided
拡張依存
Kafkaまたはユーザー定義関数のセットと相互作用するカスタムフォーマットを実装するには、SQLクライアントのJARファイルに使用できる依存関係で十分です.
org.apache.flink
flink-table-common
1.9.0
provided
現在、このモジュールには次の拡張クラスが含まれています.
SerializationSchemaFactory
DeserializationSchemaFactory
ScalarFunction
TableFunction
AggregateFunction
Table API&SQLのコンセプトと汎用APIs
事前定義されたデータ型リストとその属性