2017-09-15 9 views
0

DirectRunner経由でApache Beamを使用してWindowsでWordCountプログラムを実行しています。出力ファイルが一時フォルダ(src/main/resources /の下)に作成されています。出力ファイルが失敗しています。以下 は、コードスニペットです:Apache Beamのファイルに書き込む

p.apply("ReadMyFile", TextIO.read().from("src/main/resources/input.txt")) 
       .apply(Regex.split(" ")) 
       .apply(Count.<String>perElement()) 
       .apply(ToString.elements()) 
       .apply(TextIO.write().to("src/main/resources/output.txt")); 

私は、出力ディレクトリ/ファイルのためにそれが期待する形式を教えてください おかげで、事前に

以下のエラーです: は、例外を追加します。java:によって発生します。 lang.IllegalStateException:org.apache.beam.sdk.io.FileSystems.getFileSystemInternal(FileSystems.java:447)で のレジストラを見つけることができません。 at org.apache.beam.sdk.io.FileSystems.match(FileSystems。 java:111) at org.apache.beam.sdk.io.FileSystems.matchResources(FileSystems.java:174) at org.apache.beam.sdk.io.FileSystems.delete(FileSystems.java:321) at org.apache.beam.sdk.io.FileBasedSink $ Writer.cleanup(FileBasedSink.java:905) at org。 apache.beam.sdk.io.WriteFiles $ WriteShardedBundles.processElement(WriteFiles.java:376)

+0

プログラムが失敗したと言うときは、必ずエラーの競合印刷出力を含めてください。あなたのプログラムがうまくいかなかったことを知っているだけでは、あなたがそれを解決するのに十分ではありません。 – jkff

+0

追加例外:java.lang.IllegalStateException:によって引き起こさorg.apache.beamでorg.apache.beam.sdk.io.FileSystems.getFileSystemInternalにおけるI \t(FileSystems.java:447) \tためのレジストラを見つけることができません.sdk.io.FileSystems.match(FileSystems.java:111) \t org.apache.beam.sdk.io.FileSystems.matchResources(FileSystems.java:174) \t at org.apache.beam.sdk.io .FileSystems.delete(FileSystems.java:321) \t(org.apache.beam.sdk.io.FileBasedSink)$ Writer.cleanup(FileBasedSink.java:905) \t at org.apache.beam.sdk.io.WriteFiles $ WriteShardedBundles.processElement(WriteFiles.java:376) –

+0

私は質問を更新しましたエラーからプリントアウトされています。ありがとう –

答えて

0

現在、ビームはWindowsのパスをうまく処理しません。関連するJIRAsを参照してください。 this one。おそらくfile://を使用して絶対パスを指定してみてください。

+0

file://もうまくいきませんでした。私はUnixボックスで正常に実行できました。言われたように、これはWindowsの問題かもしれません –

関連する問題