Estoy tratando de iniciar un trabajo de Dataflow en GCP usando Apache Beam 0.6.0. Estoy compilando un uber jar usando el complemento de sombra porque no puedo iniciar el trabajo usando "mvn:execjava". Estoy incluyendo esta dependencia:
<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-runners-google-cloud-dataflow-java</artifactId> <version>0.6.0-SNAPSHOT</version> </dependency>Recibo la siguiente excepción:
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)¿Me estoy perdiendo algo más?
probar
mvn compile exec:java -Dexec.mainClass=Yourmain Class -Pdataflow-runner
* agregue -Pdataflow-runner en el último
Siguiendo el comentario de @Andrew Nguonly, copié la dependencia de DataflowRunner en el ámbito externo (en la etiqueta <dependencies> ) en el archivo pom.xml .
Básicamente agregó esto:
<dependency> <groupId>org.apache.beam</groupId> <artifactId>beam-runners-google-cloud-dataflow-java</artifactId> <version>${beam.version}</version> <scope>runtime</scope> </dependency> Antes de cerrar </dependencies> en pom.xml del ejemplo de beam wordCount.