【Flink】Apache Flink ~ 引数の扱い / ParameterTool ~

# ■ はじめに

小ネタ。

FlinkでParameterTool ってのをしったのでメモ。

目次

【1】ParameterTool
【2】パラメータの取得方法
【3】パラメータの使用方法
【4】sbt run による引数設定の仕方
【5】サンプル

【1】ParameterTool

* Flink が用意しているコマンドライン引数などの
 パラメータに関するUtilクラス
 => org.apache.flink.api.java.utils.ParameterTool

https://nightlies.apache.org/flink/flink-docs-stable/api/java/org/apache/flink/api/java/utils/ParameterTool.html

【2】パラメータの取得方法

* コマンドライン引数以外でも使い道があるみたい

[1] コマンドライン引数
http://mogile.web.fc2.com/flink/flink-docs-release-1.5/dev/best_practices.html#from-the-command-line-arguments

import org.apache.flink.api.java.utils.ParameterTool

object Job {
  def main(args: Array[String]): Unit = {
    val parameter = ParameterTool.fromArgs(args)

[2] .properties ファイル
http://mogile.web.fc2.com/flink/flink-docs-release-1.5/dev/best_practices.html#from-properties-files

val propertiesFilePath = "/home/sam/flink/myjob.properties"
val parameter = ParameterTool.fromPropertiesFile(propertiesFilePath)

[3] システムプロパティ

val parameter = ParameterTool.fromSystemProperties()

【3】パラメータの使用方法

http://mogile.web.fc2.com/flink/flink-docs-release-1.5/dev/best_practices.html#using-the-parameters-in-your-flink-program

val parameters = // ...
val input = parameter.getRequired("input")
val output = parameter.get("output", "myDefaultValue")
val expectedCount = parameter.getLong("expectedCount", -1L)
val number = parameter.getNumberOfParameters()

【4】sbt run による引数設定の仕方

* 滅茶苦茶ハマった、、、
 => 以下の関連記事にも分冊した

https://dk521123.hatenablog.com/entry/2023/08/21/000000

構文

sbt "run --<Key1> <Value1> ..."

【5】サンプル

package dk.com

import org.apache.flink.api.scala._
import org.apache.flink.api.java.utils.ParameterTool

object Job {
  def main(args: Array[String]): Unit = {
    val parameter = ParameterTool.fromArgs(args)
    println(s"number = ${parameter.getNumberOfParameters}")
    val output = parameter.get("output", "DefaultValue");
    println(s"output = ${output}")
    val intValue = parameter.getInt("intValue")
    println(s"intValue=${intValue}")
  }
}

コマンド例

sbt "run --output Hello --intValue 100"

・・・
[info] number = 2
[info] output = Hello
[info] intValue=100

関連記事

Apache Flink ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/05/235755
Apache Flink ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/03/01/235100
Apache Flink ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/29/000000
Apache Flink ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/07/23/161621
SBT ~ 引数設定の仕方 ~
https://dk521123.hatenablog.com/entry/2023/08/21/000000