Asakusa Frameworkのasakusa listのメモ。
Asakusa CLIのlistサブコマンドは、Asakusaアプリケーションの情報を表示する。
| 種類 | サブコマンド | 説明 |
|---|---|---|
| バッチ | batch |
バッチ一覧を表示する。 |
parameter |
バッチのパラメーター情報を表示する。 | |
| ジョブフロー | jobflow |
バッチ内のジョブフローの一覧を表示する。 |
| 演算子 | operator |
バッチ内のオペレーターの一覧を表示する。 |
| 入出力 | directio |
バッチ内のDirect I/OのImporter/Exporterを表示する。 |
hive |
||
windgate |
バッチ内のWindGateのImporter/Exporterを表示する。 | |
| 実行計画 | plan |
実行計画の情報(vertex)を表示する。 |
listのbatchサブコマンドで、バッチIDの一覧が表示される。
> asakusa list batch spark.example.summarizeSales vanilla.example.summarizeSales
これは、ASAKUSA_HOME/batchappsの下にあるもの(の内、asakusaコマンドに対応しているバージョンのもの)が表示される。
-v(--verbose)を付けると、バッチの詳細な情報も表示される。
> asakusa list batch -v
spark.example.summarizeSales:
class: com.example.batch.SummarizeBatch
comment: 売上集計バッチ
vanilla.example.summarizeSales:
class: com.example.batch.SummarizeBatch
comment: 売上集計バッチ
バッチの日本語名は、Batch DSLの@Batchアノテーションで指定した情報。
@Batch(name = "example.summarizeSales", comment = "売上集計バッチ")
public class SummarizeBatch extends BatchDescription {
〜
}
listのparameterサブコマンドで、バッチのパラメーター(引数)の情報が表示される。
asakusa list parameter バッチID
> asakusa list parameter spark.example.summarizeSales
date
> asakusa list parameter spark.example.summarizeSales -v
date:
comment: (SalesDetailFromCsv)
pattern: N/A
mandatory: true
パラメーターは、Importer/Exporterのパスに使われているものが収集されるようだ。
当然、Operatorの中でBatchContextを使って取得しているパラメーターは表示されない。
Batch DSLの@Batchアノテーションでパラメーター情報を記述しておくと、parameterサブコマンドで表示される。
@Batch(name = "example.summarizeSales", comment = "売上集計バッチ", parameters = {
@Parameter(key = "date", comment = "日付", pattern = "\\d{4}-\\d{2}-\\d{2}", required = true)
})
public class SummarizeBatch extends BatchDescription {
〜
}
↓
> asakusa list parameter spark.example.summarizeSales -v date: comment: 日付 pattern: \d{4}-\d{2}-\d{2} mandatory: true
listのjobflowサブコマンドで、バッチに含まれるジョブフローの一覧が表示される。
asakusa list jobflow バッチID
> asakusa list jobflow spark.example.summarizeSales byCategory
listのoperatorサブコマンドで、バッチに含まれる演算子(オペレーター)の一覧が表示される。
asakusa list operator バッチID
> asakusa list operator spark.example.summarizeSales
CategorySummaryOperator#checkStore(@MasterCheck)
CategorySummaryOperator#joinItemInfo(@MasterJoin)
CategorySummaryOperator#setErrorMessage(@Update)
CategorySummaryOperator#summarizeByCategory(@Summarize)
> asakusa list operator spark.example.summarizeSales -v
com.example.operator.CategorySummaryOperator#checkStore(@MasterCheck){}
com.example.operator.CategorySummaryOperator#joinItemInfo(@MasterJoin){}
com.example.operator.CategorySummaryOperator#setErrorMessage(@Update){message:String=商品不明}
com.example.operator.CategorySummaryOperator#setErrorMessage(@Update){message:String=店舗不明}
com.example.operator.CategorySummaryOperator#summarizeByCategory(@Summarize){}
listのdirectioサブコマンドで、バッチに含まれるDirect I/OのImporter/Exporterの一覧が表示される。
asakusa list directio {input|output} バッチID
> asakusa list directio input spark.example.summarizeSales
master::item_info.csv
master::store_info.csv
sales::**/${date}.csv
> asakusa list directio output spark.example.summarizeSales
result/category::result.csv
result/error::${date}.csv
listのplanサブコマンドで、実行計画のvertexの一覧が表示される。
vertexは、処理を実行する単位(ひとつのvertexの中に複数の演算子が入る)のようなものか。
asakusa list plan バッチID
> asakusa list plan spark.example.summarizeSales -v
v0:
label: ExternalInput(storeInfo)
blockers: {}
operators: -
v1:
label: ExternalInput(itemInfo)
blockers: {}
operators: -
v2:
label: ExternalInput(salesDetail)
blockers: {v0}
operators:
com.example.operator.CategorySummaryOperator#setErrorMessage(@Update)
com.example.operator.CategorySummaryOperator#checkStore(@MasterCheck)
v3:
label: @MasterJoin:CategorySummaryOperator.joinItemInfo
blockers: {v1, v2}
operators:
com.example.operator.CategorySummaryOperator#setErrorMessage(@Update)
com.example.operator.CategorySummaryOperator#joinItemInfo(@MasterJoin)
v4:
label: ExternalOutput(errorRecord)
blockers: {v2, v3}
operators: -
v5:
label: @Summarize:CategorySummaryOperator.summarizeByCategory
blockers: {v3}
operators:
com.example.operator.CategorySummaryOperator#summarizeByCategory(@Summarize)
v6:
label: ExternalOutput(categorySummary)
blockers: {v5}
operators: -
「v数値」がvertexのID。
M3BPのバッチを実行すると、ログにどのvertexが実行されたか出たりする。