2017-03-21 13 views
4

Apache Beam 0.6.0を使用してGCPでデータフロージョブを起動しようとしています。私は "mvn:execjava"を使ってジョブを起動できないので、shadeプラグインを使ってuber jarファイルをコンパイルしています。私はこの依存関係を含めています:DataflowRunnerを使用しようとするとClassNotFound例外が発生する

<dependency> 
    <groupId>org.apache.beam</groupId> 
    <artifactId>beam-runners-google-cloud-dataflow-java</artifactId> 
    <version>0.6.0-SNAPSHOT</version> 
</dependency> 

私は次の例外を取得しています:

Exception in thread "main" java.lang.IllegalArgumentException: Unknown 'runner' specified 'DataflowRunner', supported pipeline runners [DirectRunner] 
    at org.apache.beam.sdk.options.PipelineOptionsFactory.parseObjects(PipelineOptionsFactory.java:1609) 
    at org.apache.beam.sdk.options.PipelineOptionsFactory.access$400(PipelineOptionsFactory.java:104) 
    at org.apache.beam.sdk.options.PipelineOptionsFactory$Builder.as(PipelineOptionsFactory.java:289) 
    at com.disney.dtss.desa.tools.SpannerSinkTest.main(SpannerSinkTest.java:116) 
Caused by: java.lang.ClassNotFoundException: DataflowRunner 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.apache.beam.sdk.options.PipelineOptionsFactory.parseObjects(PipelineOptionsFactory.java:1595) 

私は他の何かが足りないのですか?

+0

で-Pdataflowランナーを追加してみてください。あなたのpom.xml、mvnの呼び出し、あるいはuber jarの内容のリストとそれをどのように呼び出すかについて何かをもっと分かち合うことができますか? –

+0

私は同じ問題を抱えています。 'mvn compile exec:java'を実行してパイプラインを起動するとうまく動作しますが、jarをビルドすると失敗します。 uberjarには必要なクラスが含まれています。 –

答えて

2

mvn compile exec:java -Dexec.mainClass=Yourmain Class -Pdataflow-runner

*

がDataflowRunnerが登録されていない場合は、間違いなく期待出力され、最後

+0

'pom.xml'では、依存関係がプロファイルの一部として定義されている場合、' mvn'コマンドのプロファイルを指定してください。 Apache BeamのデフォルトのWordCountの例は、 'DataflowRunner'のためにこれを行います。プロファイルを気にしない場合は、依存関係定義をpomファイルの ''セクションに移動してください。 – Andrew

関連する問題