akka-http로 Bigtable (HBase)에서 데이터를 검색 할 수있는 안정적인 API를 구축하고 싶습니다.sbt 어셈블리에서 Bigtable 오류가 발생했습니다. JAR (부두 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
어떻게해야합니까를?
내가 스칼라 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",
)
감사
편집가 편집 이후 그것은 akka에 의해 발생했지만, 그것을 reproduice 수 원래 불구하고 편집
Akka
없이 내 나쁜, 네이티브 라이브러리는 내 SBT 어셈블리 병합 전략 퇴거했다편집이 메이븐 작동는 문제는 SBT
해결이는 SBT 조립 기본 병합 전략에 의해 발생 된로 보인다. 나는 나는 문제를 해결하기 위해이 전략을 사용, 전략을 병합
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
}
)
참고로, "org.apache.hbase"% "hbase-server"% "1.2.1"은 필요하지 않습니다. 또한 왜 "com.google.cloud"% "google-cloud"% "0.7.0"이 필요한지 잘 모르겠습니다. 클라우드 bigtable 요구 사항이 아닙니다. –
@Solomon "com.google.cloud"이 클라우드 저장 공간으로 필요합니다.이 게시물의 목적에 따라 삭제하는 것을 잊었습니다. spark에는 "org.apache.hbase"% "hbase-server"가 필요합니다. 이 게시물의 목적에 대한 필요가 없습니다 – ogen
SBT와 함께이 예외를 해결하는 방법 있는가? –