Using Gradle
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ジョブをデプロイする方法の詳細については、デプロイメントガイドをご覧ください。

inserted by FC2 system