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が実行されたか出たりする。