2017-01-10 7 views
3

akka-httpでBigtable(HBase)からデータを取得できるRestful APIを構築したいと考えています。sbtアセンブリのBigtableエラーfat JAR(Jetty ALPNもOpenSSLも利用できません)

BigtableクライアントAPIに接続するにはnetty-tcnative-boringssl-staticが必要です。これは私のIntelliJ IDE内でかなりうまく動作しますが、私はSBT-アセンブリと脂肪のJARを構築する際に、サーバーを実行して、私は次のエラーを取得する:

2017-01-10 12:03:41 ERROR BigtableSession:129 - Neither Jetty ALPN nor OpenSSL are available. OpenSSL unavailability cause: 
java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty-tcnative-linux-x86_64, netty-tcnative-linux-x86_64-fedora, netty-tcnative] 
Exception in thread "main" java.lang.ExceptionInInitializerError 
     at mycompany.algo.serving.model.algoServingModelLoaderTest$.loadLastModel(algoServingModelLoaderTest.scala:36) 
     at mycompany.algo.serving.algoServingLauncherTest$$anonfun$4.apply(algoServingLauncherTest.scala:38) 
     at mycompany.algo.serving.algoServingLauncherTest$$anonfun$4.apply(algoServingLauncherTest.scala:38) 
     at mycompany.serving.MultiPredictorEbapServing$$anonfun$loadPredictors$1.apply(MultiPredictorEbapServing.scala:25) 
     at mycompany.serving.MultiPredictorEbapServing$$anonfun$loadPredictors$1.apply(MultiPredictorEbapServing.scala:25) 
     at scala.collection.immutable.List.foreach(List.scala:381) 
     at mycompany.serving.MultiPredictorEbapServing.loadPredictors(MultiPredictorEbapServing.scala:25) 
     at mycompany.algo.serving.algoServingLauncherTest$.delayedEndpoint$mycompany$algo$serving$algoServingLauncherTest$1(algoServingLauncherTest.scala:38) 
     at mycompany.algo.serving.algoServingLauncherTest$delayedInit$body.apply(algoServingLauncherTest.scala:11) 
     at scala.Function0$class.apply$mcV$sp(Function0.scala:34) 
     at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
     at scala.App$$anonfun$main$1.apply(App.scala:76) 
     at scala.App$$anonfun$main$1.apply(App.scala:76) 
     at scala.collection.immutable.List.foreach(List.scala:381) 
     at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 
     at scala.App$class.main(App.scala:76) 
     at mycompany.algo.serving.algoServingLauncherTest$.main(algoServingLauncherTest.scala:11) 
     at mycompany.algo.serving.algoServingLauncherTest.main(algoServingLauncherTest.scala) 
Caused by: java.lang.IllegalgotateException: Could not find an appropriate constructor for com.google.cloud.bigtable.hbase1_2.BigtableConnection 
     at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:88) 
     at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:72) 
     at mycompany.algo.serving.model.algoServingModel$.<init>(algoServingModel.scala:25) 
     at mycompany.algo.serving.model.algoServingModel$.<clinit>(algoServingModel.scala) 
     ... 18 more 
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:422) 
     at com.google.cloud.bigtable.hbase.BigtableConfiguration.connect(BigtableConfiguration.java:85) 
     ... 21 more 
Caused by: java.lang.IllegalgotateException: Neither Jetty ALPN nor OpenSSL via netty-tcnative were properly configured. 
     at com.google.cloud.bigtable.grpc.BigtableSession.<init>(BigtableSession.java:279) 
     at org.apache.hadoop.hbase.client.AbstractBigtableConnection.<init>(AbstractBigtableConnection.java:137) 
     at org.apache.hadoop.hbase.client.AbstractBigtableConnection.<init>(AbstractBigtableConnection.java:104) 
     at com.google.cloud.bigtable.hbase1_2.BigtableConnection.<init>(BigtableConnection.java:50) 
     ... 26 more 

私は何をすべき?

私はScalaの2.11.8を使用していますし、私のSBTは、次のようになります。

dependencies ++= Seq(
    "com.google.cloud" % "google-cloud" % "0.7.0", 
    "com.google.cloud.bigtable" % "bigtable-hbase-1.2" % "0.9.4", 
    "io.netty" % "netty-tcnative-boringssl-static" % "1.1.33.Fork19", 
    "org.apache.hbase" % "hbase-server" % "1.2.1", 
    "org.apache.hbase" % "hbase-client" % "1.2.1", 
    "org.apache.hbase" % "hbase-common" % "1.2.1", 
) 

ご協力いただきありがとうござい

I以来、編集EDITそれはアッカによって引き起こされたが、それをreproduice可能性があり、もともとのにEDIT

アッカ

せずに私の悪い、ネイティブライブラリは、私のsbtアセンブリのマージ戦略に追い出された

これは、Mavenのと連携EDIT、問題はこれがSBT-アセンブリのデフォルトのマージ戦略によって引き起こされたSBT

SOLUTIONであると思われます。 は、私は私が問題を解決するために、この戦略を使用し、戦略をマージ

val settings = Seq(
    assemblyMergeStrategy in assembly := { 
     case PathList("META-INF", xs @ _*) => 
     xs map {_.toLowerCase} match { 
      case "native" :: xs => 
      MergeStrategy.singleOrError 
      case _ => MergeStrategy.discard 
     } 
     case "reference.conf" => MergeStrategy.concat 
     case x => MergeStrategy.first 
    } 
) 
+0

FYIでは、 "org.apache.hbase"% "hbase-server"% "1.2.1"は必要ありません。また、なぜ "com.google.cloud"% "google-cloud"% "0.7.0"が必要なのかわかりません。それは雲の巨大な要件ではありません。 –

+0

@Solomon "com.google.cloud"はクラウドストレージに必要ですが、この投稿の目的で削除するのを忘れました。 sparkには "org.apache.hbase"% "hbase-server"が必要です。この投稿の目的はありません – ogen

+0

SBTでこの例外を解決する方法はありますか? –

答えて

1

問題がSBTとした以下の設定を追加する必要がありました。

assemblyMergeStrategy in assembly := { 
    case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard 
    case _ => MergeStrategy.first 
} 
関連する問題