当前位置: 首页 > 面试题库 >

Apache Beam:无法找到gs的注册商

苏嘉志
2023-03-14
问题内容

Beam正在使用Google的自动/价值和自动/服务工具。

我想使用DataflowRunner运行管道,并且数据存储在Google Cloud Storage中。

我添加了一个依赖项:

<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启动管道。但是当jar通过a编译mvn package并运行时,java -jar会引发错误:

java.lang.IllegalStateException: Unable to find registrar for gs

fatjar与一起打包maven-assembly-pluginGcsFileSystemRegistrar类在罐子里。


问题答案:

问题在于您构建胖子的方式。将maven-assembly- plugin不处理与相关的文件ServiceLoader正确。ServiceLoader依赖于META- INF/services/org.apache.beam.sdk.io.FileSystemRegistrar每个实现中列出的条目,以便Java知道如何找到它们。

META-INF/services/org.apache.beam.sdk.io.FileSystemRegistrarFatjar中的内容仅可能是:

org.apache.beam.sdk.io.LocalFileSystemRegistrar

您需要列出它(以及您想要的任何其他实现):

org.apache.beam.sdk.io.LocalFileSystemRegistrar
org.apache.beam.sdk.extensions.gcp.storage.GcsFileSystemRegistrar

最好的选择是使用了解这些ServiceLoader要求的工具,例如maven-shade- plugin配置为使用ServicesResourceTransformer来构建胖子的工具。



 类似资料:
  • 我正在建立一个注册页,当我提交时,我得到一个404没有找到。我正在使用react和express,我认为前端是好的。我缺少了一些后端,或者我的post请求的url错误:AXIOS.post('http://localhost:3000/auth'。如果有人能看到我的错误之处,我将不胜感激。 这是我的路由的registerPost函数。 这些是路线。

  • 我正在运行Nexus3.0.1-01,并使用它来托管Maven存储库和NPM注册中心。对于NPM,我有一个npmjs.org的本地镜像,一个本地NPM注册表和一个组合了两者的组... 我一直在npm内部使用它,在那里我可以使用npm-public组作为我的注册表,这一直工作良好。所以,我可以使用Nexus镜像NPMJ。 下一步是使用本地编写的npm模块,并将它们发布到npm-releases(在我

  • 我正在创建一个火花上下文通过使用- 然后我创建一个RDD- 现在,当我对这些数据执行一些操作时,比如(f/take rdd 3)等,我得到了一个错误- 17/11/28 14:35:00错误提示:组织遇到异常。阿帕奇。火花SparkException:未能在org向Kryo注册类。阿帕奇。火花序列化程序。KryoSerializer。newKryo(KryoSerializer.scala:129

  • 我使用SpringBoot、SpringCloudNetfix和docker来运行微服务。 在非停靠环境中一切正常,但一旦我停靠了eureka服务器和microservice(例如用户服务),我发现用户服务无法注册到eureka服务器。 我可以通过http://{Ubuntu server}:8761/eureka/访问停靠的eureka服务器,或者通过http://{Ubuntu server}

  • 我有一个数据流工作,将单个文件分割成x个记录(表)。这些流在bigQuery没有问题。 不过,我发现没有办法在结果出来后执行管道中的另一个阶段。 举个例子 根据上述内容,我希望运行以下内容: 是有无论如何运行管道的另一个部分后,up到bigQuery或这是不可能的?提前感谢。

  • null Appium--NodeConfig C:\mobile\AndroidConfig.json 我得到了一个例外: 信息:欢迎使用Appium V1.3.4(REV c8c79a85fbd6870cd6fc3d66d038a115ebe22efe)信息:Appium REST http接口监听器在0.0.0.0:4723上启动信息:[debug]非默认服务器args:{“nodeConf