gpt4 book ai didi

java - Apache 光束 : Unable to find registrar for gs

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:03 25 4
gpt4 key购买 nike

Beam 同时使用了 Google 的 auto/valueauto/service工具。

我想使用 Dataflow runner 运行管道,数据存储在 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 启动管道。但是,当通过 mvn package 编译 jar 并使用 java -jar 运行时,它会抛出错误:

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

fatjar 是包含maven-assembly-plugin 的包。 GcsFileSystemRegistrar 类在 jar 中。

最佳答案

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

您的 fatjar 中 META-INF/services/org.apache.beam.sdk.io.FileSystemRegistrar 的内容可能只有:

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 时构建您的 fatjar。

关于java - Apache 光束 : Unable to find registrar for gs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44365545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com