「出力が別 の入力を上書きします」というコンパイルエラー

36 views
Skip to first unread message

田中修

unread,
Apr 30, 2013, 8:48:17 PM4/30/13
to us...@asakusafw.com
はじめまして。

田中修と申します。

初めてAsakusaFWにてDireceI/Oバッチジョブをプログラミングしています。
単純なCSVの読み込みをValidとInvalidに分けるCheckのみのプログラミングを
POSDATA-SUMMARIZATION(Tutorial)を参考に生成したのですが

「出力が別の入力を上書きしています」といったエラーが発生し
コンパイルエラーとなってしまいました。
このようなエラーが出る理由がわかりません。

     [java] 17:48:15 [main] INFO  c.a.c.r.SpiDataClassRepository - データモデルクラスのプラグインを読み出します
     [java] 17:48:15 [main] INFO  c.a.c.r.SpiExternalIoDescriptionProcessorRepos
itory - 外部入出力のプラグインを読み出します
     [java] 17:48:15 [main] INFO  c.a.c.r.SpiFlowElementProcessorRepository - フ
ロー要素プロセッサのプラグインを読み出します
     [java] 17:48:15 [main] INFO  c.a.c.r.SpiFlowGraphRewriterRepository - グラ
フ書き換えプラグインを読み出します
     [java] 17:48:15 [main] INFO  c.a.c.f.external.ExternalIoAnalyzer - jobflow.CleaningJobFlowの入出力を検証しています
     [java] 17:48:15 [main] ERROR c.a.c.flow.FlowCompilingEnvironment - 出力が別
の入力を上書きします (gateway.ExportToCsv->gateway.ImportToCsv)
     [java] 17:48:15 [main] ERROR c.a.c.flow.FlowCompilingEnvironment - 出力が別
の入力を上書きします (gateway.ErrorToCsv->gateway.ImportToCsv)
     [java] 17:48:15 [main] ERROR c.a.c.flow.FlowCompilingEnvironment - 出力が別
の出力を上書きします (gateway.ErrorToCsv->gateway.ExportToCsv)
     [java] 17:48:15 [main] ERROR c.a.c.bootstrap.BatchCompilerDriver - コンパイ
ルはエラーにより中断しました (batch.A)
     [java] java.io.IOException: フローの入出力が正しくないため、コンパイルを中
止します (出力が別の入力を上書きします (gateway.ExportToCsv->gateway.ImportToCsv))

@Batch(name = "A")
public class A extends BatchDescription {

@Override
protected void describe() {
run(CleaningJobFlow.class).soon();
}
}

@JobFlow(name = "CleaningJobFlow")
public class CleaningJobFlow extends FlowDescription {
private final ImportFlowPartFactory Import = new ImportFlowPartFactory();

private final In<AImport> In;
private final Out<BExport> Out;
private final Out<CError> Err;
public CleaningJobFlow(
@Import(name = "In", description = ImportToCsv.class) In<AImport> In,
@Export(name = "Out", description = ExportToCsv.class) Out<BExport> Out,
@Export(name = "Err", description = ErrorToCsv.class) Out<CError> Err
) {
this.In = In;
this.Out = Out;
this.Err = Err;
}
@Override
protected void describe() {
ImportFlowPart imported = Import.create(this.In);
Out.add(imported.valid);
Err.add(imported.invalid);
}
}


上記がプログラムです。Eclipse上ではビルドエラーはないものとなっています。
一部実物とは修正してあります。

どなたかご教授いただければ幸いです。


以上。よろしくお願いいたします。

田中修

unread,
May 1, 2013, 10:58:46 PM5/1/13
to us...@asakusafw.com
お騒がせしました。

田中修です。

自己解決いたしました。
DirectFileIoProcessor
validatePathsですが
これはなぜ同じフォルダにてIN/OUTをすることをNGにしているのでしょうか?
ファイル名を変えていれば上書きにはならないと思います。
同じフォルダが利用できないのはなんだか不便な気がしないでもないですが・・・いかがなものでしょう?

ということがわかりましたので、gatewayのCsv.javaにて設定してるgetBasePathを
それぞれすべて別々に定義することでこの問題に対応することができました。

ありがとうございます。

2013年5月1日水曜日 9時48分17秒 UTC+9 田中修:

古山慎悟

unread,
May 1, 2013, 11:31:17 PM5/1/13
to 田中修, Asakusa Frameworkメーリングリスト
田中さん、

>同じフォルダが利用できないのはなんだか不便な気がしないでもないですが・・・いかがなものでしょう?
ベースパスの出力に関する制約が設けられていることには理由があります。
詳細は下記のドキュメントを参照してください。

古山



2013年5月2日 11:58 田中修 <o.ta...@amada.co.jp>:

--
このメールは Google グループのグループ「Asakusa Frameworkメーリングリスト」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、users+un...@asakusafw.com にメールを送信します。
このグループに投稿するには、us...@asakusafw.com にメールを送信してください。
http://groups.google.com/a/asakusafw.com/group/users/?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/a/asakusafw.com/groups/opt_out にアクセスしてください。
 
 

田中修

unread,
May 2, 2013, 12:05:06 AM5/2/13
to us...@asakusafw.com, 田中修
古山様

ありがとうございます。
出力のみの制約ということなのでしょうか?
サイトを読みましたが理解出来ませんでした。
私がHadoopを理解していないのがそもそもの原因かもしれません。

情報提供ありがとうございます。
2013年5月2日木曜日 12時31分17秒 UTC+9 古山慎悟:
このグループから退会し、メールの受信を停止するには、users+unsu...@asakusafw.com にメールを送信します。
Reply all
Reply to author
Forward
0 new messages