This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
Gradleを使ってプロジェクトを設定する方法 #
Flinkプロジェクトを設定するには、buildツールが必要になる可能性があります。この亜ギドは、開発プロセスのタスクを自動化するために使えるオープンソースの汎用ビルドツールであるGradleを使ってこれを行う方法を説明します。
必要条件 #
- Gradle 7.x
- Java 8 (非推奨) または Java 11
プロジェクトをIDEにインポートする #
プロジェクトフォルダとファイルが作成されている場合は、開発とテストのためにこのプロジェクトをIDEにインポートすることをお勧めします。
IntelliJ IDEAはGradle
プラグインを介してGradleプロジェクトをサポートします。
EclipseはEclipse Buildshipプラグインを通じてこれを行います(インポートウィザードの最後のステップで、かならずGradleバージョン3.0以上を指定してください; shadow
プラグインにはそれが必要です)。GradleのIDE統合を使って、Gradleでプロジェクトファイルを作成することもできます。
注意: JavaのデフォルトのJVMヒープサイズはFlinkには小さすぎる可能性があるため、手動で増やす必要があります。
Eclipseでは、Run Configurations -> Arguments
を選択し、VM Arguments
ボックスに-Xmx800m
と書き込みます。
IntelliJ IDEAでJVMオプションを変更する推奨方法は、Help | Edit Custom VM Options
メニューからです。
詳細は、この記事を参照してください。
IntelliJでの注意: IntelliJ IDEA内でアプリケーションを実行するには、実行構成でInclude dependencies with "Provided" scope
ボックスにチェックを入れる必要があります。このオプションが利用できない場合(古いバージョンのIntelliJ IDEAを使っている可能性があります)、回避策はアプリケーションのmain()
メソッドを呼び出すテストを作成することです。
プロジェクトのビルド #
プロジェクトをビルド/パッケージ化する__場合は、プロジェクトディレクトリに移動し、’gradle clean shadowJar
‘コマンドを実行します。
アプリケーションを含む__JARファイルが見つかります、さらに依存関係としてアプリケーションに追加したコネクタとライブラリも含まれます: build/libs/<project-name>-<version>-all.jar
。
注意: アプリケーションのメインクラス/エントリポイントとしてStreamingJobとは異なるクラスを使う場合、それに応じてbuild.gradle
ファイルのmainClassName
設定を変更することをお勧めします。こうすることで、Flinkはメインクラスを追加指定せずにJARファイルからアプリケーションを実行できます。
プロジェクトへの依存関係の追加 #
build.gradle
ファイルの依存関係ブロックで依存関係の設定を指定します。
例えば、Gradleビルドスクリプトまたはquickstartスクリプトを使ってプロジェクトを作成した場合、次のように依存関係としてKafkaコネクタを追加します。
build.gradle
...
dependencies {
...
flinkShadowJar "org.apache.flink:flink-connector-kafka:${flinkVersion}"
...
}
...
重要: これらの(コア)依存関係は全て、スコープをprovidedに設定する必要がることに注意してください。これは、それらをコンパイルする必要があるが、プロジェクトの結果として得られるアプリケーションJARファイルにパッケージ化すべきではないことを意味します。providedに設定されていない場合、最良のシナリオでは結果として生成されるJARは極端に大きくなります。JARに全てのFlinkコア依存関係も含まれるためです。最悪のシナリオは、アプリケーションのJARに追加されたFlinkコアの依存関係が、独自の依存関係バージョンの一部と衝突することです(これは通常逆クラスローディングによって回避されます)。
依存関係をアプリケーションのJARに正しくパッケージ化するには、これらのアプリケーションの依存関係をcompileスコープに設定する必要があります。
アプリケーションのパッケージ化 #
ユースケースによっては、FlinkアプリケーションをFlink環境にデプロイする前に、様々な方法でパッケージ化する必要がある場合があります。
FlinkジョブのJARを作成し、サードパーティの依存関係を使わずにFlinkの依存関係のみを使う場合(つまり、JSON形式のファイルシステムコネクタを使う場合)、uber/fat JARを作成したり、依存関係をシェーディングしたりする必要はありません。
コマンドgradle clean installDist
を使えます。Gradle Wrapperを使っている場合、これは./gradlew clean installDist
になります。
FlinkジョブのJARを作成し、Flinkディストリビューションに組み込まれていない外部依存関係を使う場合は、それらをディストリビューションのクラスパスに追加するか、uber/fatアプリケーションJARにシャーディングします。
コマンドgradle clean installShadowDist
を使うと、/build/install/yourProject/lib
に単一のfat JARが生成されます。
Gradle Wrapperを使っている場合、これは./gradlew clean installShadowDist
になります。
生成されたuber/fat JARを使って、次のようにローカルまたはリモートクラスタに送信できます:
bin/flink run -c org.example.MyJob myFatJar.jar
Flinkジョブをデプロイする方法の詳細については、デプロイメントガイドをご覧ください。