哪个Java Google Cloud库用于BigQuery和DataProc组合



我对我在Java Spark应用程序中必须使用的Google Cloud Java库有点困惑。

在我的应用程序中,我必须使用不同的Google云服务。例如,在BigQuery文档中,我发现我必须使用

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-bigquery</artifactId>
  <version>0.32.0-beta</version>
</dependency>

在Google存储时,我必须使用

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-storage</artifactId>
  <version>1.14.0</version>
</dependency>

等其他Google Cloud Services。

但是,如果我在DataProc上使用这些库,则有一些问题,例如与Guava库的冲突问题(请参阅此处:nosuchmethoderror:com.google.common.util.util.concurrent.moreexecutors.moreexecutors.directectectector.directectectecutor在弹性搜索罐上汇合(。P>

最后,我找到了"雨伞包"

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud</artifactId>
    <version>0.8.0</version>
</dependency>

使用此软件包,我无需为任何一个Google Cloud Service使用库。只有一个用于所有服务的库,没有更多的冲突问题。

好的,但是伞软件包的网页(https://github.com/googlecloodplatform/google-cloud-java/tree/master/master/google-cloud(说:

"此软件包无法保证稳定性,并且可能会体验 向后不兼容的更改。"

那么,伞包装是否具有其他Google Cloud Services的功能?

雨伞软件包代表使用DataProc上使用不同Google Cloud Services的更方便的方法?

更一般地:当我想在单个应用程序中使用不同的Google Cloud Services并避免对具有不同版本的库(Guava,Gax等(之间的冲突时,哪种方法是最佳方法?

雨伞软件包似乎经常更新,但对我来说,根据您的需求,这看起来像是权衡的。对依赖关系进行微观管理将允许更优质的控制,但是您需要通过手动排除某些库来解决冲突(如您发布的链接中(。使用BOM/雨伞更方便,但库将使用可能暂时过时的受控版本。除非您需要一个非常特定的库或伞上的组合(即,您想修复大Query元素但要继续更新其余的(,我只会使用这种更简单的方法。稳定性警告不会影响单个依赖性。

最新更新