【问题标题】:java.lang.IllegalStateException: Neither Jetty ALPN nor OpenSSL via netty-tcnative were properly configuredjava.lang.IllegalStateException:Jetty ALPN 和 OpenSSL 通过 netty-tcnative 均未正确配置
【发布时间】:2017-07-03 00:56:05
【问题描述】:

我正在 Scala 中做一个 Bigtable + Dataflow 项目。使用 sbt 程序集构建一个 fat jar。它组装得很好,但我一运行就收到以下运行时错误:

Exception in thread "main" java.lang.IllegalStateException: Could not find an appropriate constructor for com.google.cloud.bigtable.hbase1_2.BigtableConnection
    at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:65)
    at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:55)
    at com.snowplowanalytics.dataflow.streaming.storage.BigtableUtils$.setupBigtable(BigtableUtils.scala:60)
    at com.snowplowanalytics.dataflow.streaming.StreamingCounts$.setupDataflow(StreamingCounts.scala:71)
    at com.snowplowanalytics.dataflow.streaming.StreamingCounts$.execute(StreamingCounts.scala:139)
    at com.snowplowanalytics.dataflow.streaming.StreamingCountsApp$.main(StreamingCountsApp.scala:75)
    at com.snowplowanalytics.dataflow.streaming.StreamingCountsApp.main(StreamingCountsApp.scala)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:62)
    ... 6 more
Caused by: java.lang.IllegalStateException: Neither Jetty ALPN nor OpenSSL via netty-tcnative were properly configured.
    at com.google.cloud.bigtable.grpc.BigtableSession.<init>(BigtableSession.java:238)
    at org.apache.hadoop.hbase.client.AbstractBigtableConnection.<init>(AbstractBigtableConnection.java:124)
    at org.apache.hadoop.hbase.client.AbstractBigtableConnection.<init>(AbstractBigtableConnection.java:92)
    at com.google.cloud.bigtable.hbase1_2.BigtableConnection.<init>(BigtableConnection.java:41)
    ... 11 more

我已经阅读了这些问题并尝试了他们的建议,但没有成功。

我正在使用以下工件和版本(用于谷歌云相关库):

"com.google.cloud.dataflow" % "google-cloud-dataflow-java-sdk-all" % "1.9.0"
"com.google.cloud.bigtable" % "bigtable-hbase-1.2" % "0.9.1"

我正在导入的其他一些库依赖于 google 的协议缓冲区库,这引发了冲突,我使用的合并策略是丢弃 bigtable-protos-0.3.0.jar(有利于 grpc-core -proto-0.0.3.jar)

【问题讨论】:

  • 你看过在 sbt 中使用阴影吗? github.com/sbt/sbt-assembly#shading 我遇到过类似的 protobuf 冲突问题,我用这种方式解决了我的 fat jar
  • 您是否将 netty-tcnative-boringssl-static 添加到您的构建中?这是 maven 的配置 https://cloud.google.com/bigtable/docs/using-maven
  • 另外,删除 bigtable-protos-0.3.0.jar 应该会导致一些其他问题。您需要 bigtable protobuf 对象才能执行 bigtable 请求。这是另一种 Dataflow 方法,其中包括将消除冲突的 protobuf 对象的阴影版本:cloud.google.com/bigtable/docs/dataflow-hbase

标签: scala sbt google-cloud-dataflow bigtable google-cloud-bigtable


【解决方案1】:

使用"com.google.cloud.bigtable" % "bigtable-hbase-dataflow" % "0.9.5.1" 代替"com.google.cloud.bigtable" % "bigtable-hbase-1.2" % "0.9.1"。为了使 hbase 与 Dataflow 兼容,必须进行大量包重命名。

【讨论】:

    猜你喜欢
    • 2016-11-14
    • 2017-08-19
    • 2018-07-23
    • 2021-10-23
    • 2017-10-07
    • 1970-01-01
    • 2017-11-16
    • 2021-10-17
    • 2019-07-11
    相关资源
    最近更新 更多