【发布时间】:2018-01-23 06:24:51
【问题描述】:
我有一个将结果写入 Cloud Spanner 表的数据流作业。当我在本地运行作业时一切正常,但在 Dataflow 上运行它会出现以下错误 -
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
com.google.cloud.spanner.SpannerOptions$NettyRpcChannelFactory.newSslContext(SpannerOptions.java:289)
com.google.cloud.spanner.SpannerOptions$NettyRpcChannelFactory.newChannel(SpannerOptions.java:278)
com.google.cloud.spanner.SpannerOptions.createChannel(SpannerOptions.java:252)
com.google.cloud.spanner.SpannerOptions.createChannels(SpannerOptions.java:239)
com.google.cloud.spanner.SpannerOptions.<init>(SpannerOptions.java:88)
com.google.cloud.spanner.SpannerOptions.<init>(SpannerOptions.java:43)
com.google.cloud.spanner.SpannerOptions$Builder.build(SpannerOptions.java:179)
我在尝试像这样创建 SpannerOptions 实例时收到此错误 -
val options: SpannerOptions = SpannerOptions.newBuilder().build()
我看到了this question,但像下面这样排除netty-all 并没有帮助。
libraryDependencies ++= libraries(
apache_beam,
circe,
scalatest % Test,
junit % Test,
hamcrest % Test
).map(_.exclude("io.netty", "netty-all"))
我能做些什么来解决这个问题?
【问题讨论】:
-
您使用的是什么版本的 Cloud Spanner Java 库?如果您的构建路径中有多个冲突的 tcnative 版本,或者您缺少它,则此错误很典型。在 Cloud Spanner 库的最新版本中,tcnative 包已从“io.netty.tcnative”移至“io.netty.internal.tcnative”。您可以尝试将后者从您的依赖项中排除,看看是否有帮助。
-
@KnutOlavLoite 我观察到发生此错误,然后
"com.google.cloud" % "google-cloud-pubsub" % "0.21.1-beta"是项目的依赖项。请问您有这方面的资料吗?谢谢! -
我可以看到
"com.google.cloud" % "google-cloud-pubsub" % "0.21.1-beta"将io.netty:netty-tcnative-boringssl-static:2.0.3.Final引入到 Beam 需要的驱逐io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26的项目中。1.1.33.Fork26直接覆盖2.0.3没有帮助。 -
对不起,我不知道。我创建了一个关于如何将 Google Cloud Spanner JDBC 与 Dataflow 一起使用的教程。 JDBC 驱动程序隐藏了它的依赖关系,这应该(在大多数情况下)解决这些问题。我不知道这是否适合你,但你可以在这里找到教程:googlecloudspanner.com/2017/10/…
标签: java scala google-cloud-platform google-cloud-dataflow google-cloud-spanner