pione-client

提供: Eospedia
2014年12月18日 (木) 01:57時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

pione-clientとはPIONE定義書やパッケージから処理を実行するPIONEコマンドです。

オプション一覧

オプション デフォルト 説明
引数 location 必須 実行するPIONE定義書またはパッケージ
-b LOCATION ./process/ 処理のベースディレクトリ
--client-ui TYPE Type of the client's user interface
--communication-address URI プロセス間通信で使用するIPアドレス:ポート番号
--dry-run なし なし ドライランモード
--features FEATURES 特性(PIONE)
--file-cache-method NAME simple ファイルキャッシュ方式名: simple, no_cache
--file-sliding [BOOLEAN] ファイルスライド処理
-i LOCATION Set input directory
--notification-receiver URI 通知を受けるアドレス:ポート番号(ポート番号は省略可)
--notification-target URI 通知として送信するブロードキャストアドレス:ポート番号(ポート番号は省略可)
--params #オプション --params参照 なし パラメータの設定
--parent-front URI set parent front URI
--rehearse [SCENARIO] デフォルトシナリオ パッケージ内で実行するシナリオ名
--request-from URI URI that the client requested the job from
--request-task-worker N タスクワーカの要求数
--session-id ID Session id of the job
--stand-alone なし なし スタンドアローンモード
--stream [BOOLEAN] ストリームモード
-t N タスクワーカの最大プロセス起動数
--timeout SEC 0 タイムアウト設定(秒)(0のときはタイムアウトしない)
--color BOOLEAN true 出力結果の文字に色を付ける
--debug [TYPE] system デバッグモードで実行
-h [FORMAT] txt ヘルプを表示
-v なし なし バージョンを表示

実行例

オプション必須項目のみの場合

引数にPIONE定義書を指定して実行します。

$ pione-client HelloWorld.pione
  ==> &Anonymous:Root([],{})
    --> Rule Application: &Anonymous:Root([],{})
      --> Distribution: &Anonymous:Root([],{})
            >>> &Anonymous:Main([],{})
  ==> &Anonymous:Main([],{})
   SH ------------------------------------------------------------
   SH 	echo "Hello PIONE world !" > message.txt
   SH ------------------------------------------------------------
      <-- Distribution: &Anonymous:Root([],{})
  <== &Anonymous:Main([],{})
    <-- Rule Application: &Anonymous:Root([],{})
  <== &Anonymous:Root([],{})
$ ls ./process/
output			pione-process.log
$ cat ./process/output/message.txt 
Hello PIONE world !

-b指定なしなので、processディレクトリが作成され、その中に入力(今回は無い)、出力、ログが格納されます。

オプション -b

-bにてディレクトリ名を指定して実行します。

$ pione-client HelloWorld.pione -b BaseDir
  ==> &Anonymous:Root([],{})
    --> Rule Application: &Anonymous:Root([],{})
      --> Distribution: &Anonymous:Root([],{})
            >>> &Anonymous:Main([],{})
  ==> &Anonymous:Main([],{})
   SH ------------------------------------------------------------
   SH 	echo "Hello PIONE world !" > message.txt
   SH ------------------------------------------------------------
  <== &Anonymous:Main([],{})
      <-- Distribution: &Anonymous:Root([],{})
    <-- Rule Application: &Anonymous:Root([],{})
  <== &Anonymous:Root([],{})
$ ls BaseDir/
output			pione-process.log
$ cat BaseDir/output/message.txt 
Hello PIONE world !

BaseDirディレクトリが作成され、その中に結果などが格納されています。

オプション --dry-run

$ pione-client HelloWorld.pione --dry-run
  ==> &Anonymous:Root([],{})
    --> Rule Application: &Anonymous:Root([],{})
      --> Distribution: &Anonymous:Root([],{})
            >>> &Anonymous:Main([],{})
  ==> &Anonymous:Main([],{})
   SH ------------------------------------------------------------
   SH 	echo "Hello PIONE world !" > message.txt
   SH ------------------------------------------------------------
      <-- Distribution: &Anonymous:Root([],{})
    <-- Rule Application: &Anonymous:Root([],{})
  <== &Anonymous:Root([],{})
  <== &Anonymous:Main([],{})
$ ls ./process/
output			pione-process.log
$ cat ./process/output/message.txt 
$ 

ドライランモードではシェルスクリプトの実行をせず、出力ファイルを空ファイルで作成します。

オプション -i

-iにて入力データ用のディレクトリ名を指定して実行します。

Multiplying.pione

 Rule Main
 	input 'test.in'
 	output 'test.out'
 Action 
 	awk '{ print $1*2 }' {$I[1]} > {$O[1]} 
 End

上記のPIONE定義書は入力データtest.inを必要としていますので、test.inのディレクトリ名を相対パスで設定します。

MultiplyingInput内

$ ls MultiplyingInput
test.in


実行結果

$ pione-client Multiplying.pione -i MultiplyingInput/
  ==> &Anonymous:Root([.DS_Store,test.in],{})
    --> Rule Application: &Anonymous:Root([.DS_Store,test.in],{})
      --> Distribution: &Anonymous:Root([.DS_Store,test.in],{})
            >>> &Anonymous:Main([test.in],{})
  ==> &Anonymous:Main([test.in],{})
   SH ------------------------------------------------------------
   SH 	awk '{ print $1*2 }' test.in > test.out 
   SH ------------------------------------------------------------
      <-- Distribution: &Anonymous:Root([.DS_Store,test.in],{})
  <== &Anonymous:Main([test.in],{})
    <-- Rule Application: &Anonymous:Root([.DS_Store,test.in],{})
  <== &Anonymous:Root([.DS_Store,test.in],{})
$ ls process/
input			output			pione-process.log
$ ls process/input/
test.in

MultiplyingInput内のデータを入力としてprocess/input内にコピーし、処理を実行しています。

オプション --params

ParamTest.pione

param $val

Rule Main
	output 'message.txt'
Action
	echo "{$val}" > message.txt
End

上記のPIONE定義書は変数としてvalが宣言されてそれをmessage.txtに書き込む処理です。--paramsよりvalに値を入れて実行します。

実行結果

$ pione-client ParamTest.pione --params='{val:123}'
"{val:123}"
  ==> &Anonymous:Root([],{})
    --> Rule Application: &Anonymous:Root([],{})
      --> Distribution: &Anonymous:Root([],{})
            >>> &Anonymous:Main([],{})
  ==> &Anonymous:Main([],{})
   SH ------------------------------------------------------------
   SH 	echo "123" > message.txt
   SH ------------------------------------------------------------
      <-- Distribution: &Anonymous:Root([],{})
  <== &Anonymous:Main([],{})
    <-- Rule Application: &Anonymous:Root([],{})
  <== &Anonymous:Root([],{})
$ cat process/output/message.txt 
123

val=123としてmessage.txtに書き込まれました。