0
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PDIでのバッチ実行の方法まとめ

Last updated at Posted at 2018-05-02

PDIは手元で実行する際にはSpoonでそのまま実行することが多いのですが、バッチ的にCronやタスクスケジューラーで実行したいという質問をよくされるので、まとめておきました。

バッチ実行用のスクリプト

PDIには、バッチ実行用に2つのスクリプトがあらかじめ用意されています。
以下の2種類です。

  • pan.sh (Windowsの場合はPan.bat)
  • kitchen.sh (Windownsの場合はKitchen.bat)

PDIには2つの設定形式(JOBとTransformation)があるのですが、それぞれpan系がTransformationに、kitchen系がJOBに対応しています。
つまり、Transformationを実行する場合にはpan系のスクリプトを、JOBを実行する場合にはkitchen系のスクリプトを使用するわけです。

※Transformationはデータを抽出してきて変換してロードするまでのいわゆるETL処理を実行するもので、JOBはそれらTransformationをまとめて実行するためのものです。JOBを使用すると、先行のTransformation処理が成功すればTransformation2、失敗すればTransformation3など、処理の流れを設定することができます。それ以外にも特定ファイルがあれば特定のTransformationを実行するなども可能です。

panの実行

まずはそのまま実行してみます。するとしばらくしてヘルプが表示されます。

# cd data-integration (※PDIのインストールディレクトリ)
# ./pan.sh
:
:
Options:
  -rep            = リポジトリ名
  -user           = リポジトリユーザ名
  -pass           = リポジトリパスワード
  -trans          = 起動するトランスフォーメーション名
  -dir            = ディレクトリー (/の追記が必要)
  -file           = The filename (Transformation in XML) to launch
  -level          = ログレベル(Basic, Detailed, Debug, Rowlevel, Error, Minimal, Nothing)
  -logfile        = 書き出すためのロギングファイル
  -listdir        = リポジトリ内のディレクトリを表示します。
  -listtrans      = 指定されたディレクトリのトランスフォーメーションを表示します。
  -listrep        = 利用可能なリポジトリを表示します。
  -exprep         = 全てのリポジトリオブジェクトをひとつのXMLファイルにエクスポートします。
  -norep          = リポジトリにロギングしません。
  -safemode       = セーフモードで起動します。
  -version        = show the version, revision and build date
  -param          = パラメータ <NAME>Pan.ComdLine.Version=バージョン、更新、作成日時表示
  -listparam      = 指定されたトランスフォーメーションで定義されたパラメータ情報を表示します。
  -metrics        = Gather metrics during execution
  -maxloglines    = 内部的に保持されるログの最大行数を指定します。 0(デフォルト)に設定するとすべての行を保持します。
  -maxlogtimeout  = 内部的に保持されるログの最大有効期間(分)を指定します。0(デフォルト)に設定すると無制限となります。

リポジトリ名(rep)、ユーザ名(user)、パスワード(pass)、ディレクトリ(dir)、トランスフォーメーション名(trans)はリポジトリを使用している場合に設定します。
※PDIのリポジトリについては、こちらをご確認ください。

# ./pan.sh -rep localhost -user admin -pass password -dir /home/admin -trans test
:
:
2018/05/02 10:51:25 - Pan - 実行開始
2018/05/02 10:51:25 - RepositoriesMeta - Reading repositories XML file: /Users/michi/.kettle/repositories.xml
2018/05/02 10:51:25 - PurRepositoryConnector - Creating security provider
2018/05/02 10:51:25 - PurRepositoryConnector - Creating repository web service
2018/05/02 10:51:25 - PurRepositoryConnector - Creating repository sync web service
May 02, 2018 10:51:25 AM com.sun.xml.ws.api.streaming.XMLStreamReaderFactory$Woodstox <init>
警告: Expected property not found in Woodstox input factory: {0}
2018/05/02 10:51:26 - PurRepositoryConnector - Repository web service created
2018/05/02 10:51:26 - PurRepositoryConnector - Creating unified repository to web service adapter
2018/05/02 10:51:26 - PurRepositoryConnector - Synchronizing repository web service
2018/05/02 10:51:26 - PurRepositoryConnector - Security provider created
2018/05/02 10:51:27 - PurRepositoryConnector - Registering security provider
2018/05/02 10:51:27 - PurRepositoryConnector - Repository services registered
2018/05/02 10:51:27 - PurRepository - Creating repository meta store interface
2018/05/02 10:51:27 - PurRepository - Connected to the enterprise repository
2018/05/02 10:51:27 - test - Dispatching started for transformation [test]
2018/05/02 10:51:27 - データグリッド.0 - 処理を終了 (I=0, O=0, R=0, W=1, U=0, E=0)
2018/05/02 10:51:27 - Pan - 終了しました。
2018/05/02 10:51:27 - Pan - 開始Pan.ComdLine.XMLTransFile=起動するファイル名(XML内のトランスフォーメーションファイル)
2018/05/02 10:51:27 - Pan - 2秒後にプロセスを終了します。
2018/05/02 10:51:27 - test -
2018/05/02 10:51:27 - test - Step データグリッド.0 ended successfully, processed 1 lines. ( 0 lines/s)

リポジトリを使用せずにファイルベース(.ktrファイル)で実行する場合には、リポジトリの設定は行わずにファイル名(file)で指定します。

# ./pan.sh -file test.ktr
:
:
2018/05/02 10:54:02 - Pan - 実行開始
2018/05/02 10:54:02 - test - Dispatching started for transformation [test]
2018/05/02 10:54:02 - データグリッド.0 - 処理を終了 (I=0, O=0, R=0, W=1, U=0, E=0)
2018/05/02 10:54:02 - Pan - 終了しました。
2018/05/02 10:54:02 - Pan - 開始Pan.ComdLine.XMLTransFile=起動するファイル名(XML内のトランスフォーメーションファイル)
2018/05/02 10:54:02 - Pan - 0秒後にプロセスを終了します。
2018/05/02 10:54:02 - test -
2018/05/02 10:54:02 - test - Step データグリッド.0 ended successfully, processed 1 lines. ( - lines/s)

あと良く使う設定としては、ログ系の設定とパラメータ系の設定です。
以下は、パラメータ"Year"に2018を、"Month"に05を設定し、実行ログをログレベル"Basic"で"test.log"に出力するように実行した場合の例です。
パラメータが設定されているか確認するために、パラメータをログに出力するようにしています。

# ./pan.sh -file test.ktr -param Year=2018 -param Month=05 -level Basic -logfile test.log
:
:
2018/05/02 11:27:28 - Pan - レベル: 基本のログでログ出力をいたします。
2018/05/02 11:27:28 - Pan - 実行開始
2018/05/02 11:27:28 - test - Dispatching started for transformation [test]
2018/05/02 11:27:28 - データグリッド.0 - 処理を終了 (I=0, O=0, R=0, W=1, U=0, E=0)
2018/05/02 11:27:28 - ログ書き込み.0 -
2018/05/02 11:27:28 - ログ書き込み.0 - ------------> Linenr 1------------------------------
2018/05/02 11:27:28 - ログ書き込み.0 - Year = 2018
2018/05/02 11:27:28 - ログ書き込み.0 - Month = 05
2018/05/02 11:27:28 - ログ書き込み.0 -
2018/05/02 11:27:28 - ログ書き込み.0 - a = 1
2018/05/02 11:27:28 - ログ書き込み.0 -
2018/05/02 11:27:28 - ログ書き込み.0 - ====================
2018/05/02 11:27:28 - ログ書き込み.0 - 処理を終了 (I=0, O=0, R=1, W=1, U=0, E=0)
2018/05/02 11:27:28 - Pan - 終了しました。
2018/05/02 11:27:28 - Pan - 開始Pan.ComdLine.XMLTransFile=起動するファイル名(XML内のトランスフォーメーションファイル)
2018/05/02 11:27:28 - Pan - 0秒後にプロセスを終了します。
2018/05/02 11:27:28 - test -
2018/05/02 11:27:28 - test - Step データグリッド.0 ended successfully, processed 1 lines. ( - lines/s)
2018/05/02 11:27:28 - test - Step ログ書き込み.0 ended successfully, processed 1 lines. ( - lines/s)

こんな感じで実行することが可能です。
Cronやタスクスケジューラーで実行する場合は、そのまま上記のコマンドラインを実行するように設定するか、一度別のスクリプトやバッチファイルでラップしてから、そのスクリプトを実行するように設定する感じになります。

kitchen.shも大体同じ感じなのでここでは割愛します。
詳細は、Pentaho公式ドキュメントをご確認ください。
実行後に返却されるステータスコードなども記載されています。

0
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?