Beam正在使用Google的auto/value和auto/service工具。Apache Beam:无法找到gs的注册商
我想使用Dataflow运行器运行管道,并将数据存储在Google云端存储上。
我添加了一个依赖关系:
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-extensions-google-cloud-platform-core</artifactId>
<version>2.0.0</version>
</dependency>
我能够开始从的IntelliJ管道。但是,当罐子通过mvn package
编译并运行java -jar
它抛出一个错误:
java.lang.IllegalStateException: Unable to find registrar for gs
的fatjar是包maven-assembly-plugin
。类在罐子里。
谢谢!你是对的。我昨天晚上通过从原型创建一个Beam项目并比较了我的'pom.xml'和新的'pom.xml'之间的区别,我发现了它。切换到'maven-shade-plugin'后,它开始工作得很好。 –
如果你在Shadow插件中使用Gradle,你可以通过在shadowJar {...}闭包中使用'mergeServiceFiles()'来解决这个问题。 – Cristian