UnsatisfiedLinkError: no snappyjava in java.Bibliothek.Pfad beim ausführen von Spark MLLib Unit test innerhalb von Intellij
Folgende Ausnahme aufgetreten ist, wenn ein spark unit-test, der erfordert, snappy compression:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317)
at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219)
at org.xerial.snappy.Snappy.<clinit>(Snappy.java:44)
at org.apache.spark.io.SnappyCompressionCodec.<init>(CompressionCodec.scala:150)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:68)
at org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:60)
at org.apache.spark.broadcast.TorrentBroadcast.org$apache$spark$broadcast$TorrentBroadcast$$setConf(TorrentBroadcast.scala:73)
at org.apache.spark.broadcast.TorrentBroadcast.<init>(TorrentBroadcast.scala:79)
at org.apache.spark.broadcast.TorrentBroadcastFactory.newBroadcast(TorrentBroadcastFactory.scala:34)
at org.apache.spark.broadcast.BroadcastManager.newBroadcast(BroadcastManager.scala:62)
at org.apache.spark.SparkContext.broadcast(SparkContext.scala:1077)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitMissingTasks(DAGScheduler.scala:849)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitStage(DAGScheduler.scala:790)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$submitStage$4.apply(DAGScheduler.scala:793)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$submitStage$4.apply(DAGScheduler.scala:792)
at scala.collection.immutable.List.foreach(List.scala:318)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitStage(DAGScheduler.scala:792)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$submitStage$4.apply(DAGScheduler.scala:793)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$org$apache$spark$scheduler$DAGScheduler$$submitStage$4.apply(DAGScheduler.scala:792)
at scala.collection.immutable.List.foreach(List.scala:318)
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$submitStage(DAGScheduler.scala:792)
at org.apache.spark.scheduler.DAGScheduler.handleJobSubmitted(DAGScheduler.scala:774)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1393)
at org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1385)
at org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48)
Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
at org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java:52)
... 33 more
Welche Einstellungen oder änderungen erforderlich sind, um das Problem zu beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andere Lösung aktualisieren Sie Ihre version von snappy. Während dieses problem vorhanden ist, in 1.0.4.1, es wurde behoben in 1.0.5. Hinzufügen eines Ausgrenzung in spark Abhängigkeiten wie
und dann hinzufügen
Tat es für mich.
Den Weg um dies zu umgehen ist die Aktualisierung der Intellij die Konfiguration Auszuführen. Fügen Sie die folgenden JVM-Parameter:
-Dorg.xerial.snappy.lib.name=libsnappyjava.jnilib
zu denmvn test .... -Dorg.xerial.snappy.lib.name=libsnappyjava.jnilib
.Konfrontiert dieses problem mit reinigen eigenständige installation von Spark 1.6.1. Um es zu lösen musste ich:
1) manuell hinzufügen libsnappyjava.jnilib (es ist in der jar) auf java.Bibliothek.Pfad (die umfasst mehrere Standorte, ~/Library/Java/Extensions/ist in Ordnung)
2) hinzufügen snappy-java-1.1.2.4.jar Spark-s-classpath (in spark-env.sh hinzufügen
"export SPARK_CLASSPATH=.../snappy-java-1.1.2.4.jar"
Erlebte ich den gleichen Fehler.
die version des spark-core war: 1.3.0-cdh5.4.3
sobald ich es geändert: 1.3.0
es fixiert es.
beachten Sie, dass es ist "vorgesehen", also auf die Produktion, es spielt keine Rolle, es ist nur für die Entwicklung der Maschine.
Bearbeiten:
ich fand eine vernünftige Lösung.
das problem resultiert aus einem bug in der snappy Kompression von Java in OSX.
also um es zu beheben, können Sie hinzufügen, um Ihre pom-Datei: