【问题标题】:java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappyjava.lang.NoClassDefFoundError:无法初始化类 org.xerial.snappy.Snappy
【发布时间】:2018-07-12 08:31:05
【问题描述】:

我正在尝试从 DSE 5.0.11 运行 spark-shell。我可以成功创建 RDD,但尝试查询它会产生:

<pre>
Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException
        at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1212)
        at org.apache.spark.broadcast.TorrentBroadcast.readBroadcastBlock(TorrentBroadcast.scala:165)
        at org.apache.spark.broadcast.TorrentBroadcast._value$lzycompute(TorrentBroadcast.scala:64)
        at org.apache.spark.broadcast.TorrentBroadcast._value(TorrentBroadcast.scala:64)
        at org.apache.spark.broadcast.TorrentBroadcast.getValue(TorrentBroadcast.scala:88)
        at org.apache.spark.broadcast.Broadcast.value(Broadcast.scala:70)
        at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:62)
        at org.apache.spark.scheduler.Task.run(Task.scala:89)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
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 org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:72)
        at org.apache.spark.io.CompressionCodec$.createCodec(CompressionCodec.scala:65)
        at org.apache.spark.broadcast.TorrentBroadcast.org$apache$spark$broadcast$TorrentBroadcast$$setConf(TorrentBroadcast.scala:73)
        at org.apache.spark.broadcast.TorrentBroadcast$$anonfun$readBroadcastBlock$1.apply(TorrentBroadcast.scala:167)
        at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1205)
        ... 11 more
Caused by: java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
        at org.apache.spark.io.SnappyCompressionCodec$.liftedTree1$1(CompressionCodec.scala:171)
        at org.apache.spark.io.SnappyCompressionCodec$.org$apache$spark$io$SnappyCompressionCodec$$version$lzycompute(CompressionCodec.scala:168)
        at org.apache.spark.io.SnappyCompressionCodec$.org$apache$spark$io$SnappyCompressionCodec$$version(CompressionCodec.scala:168)
        at org.apache.spark.io.SnappyCompressionCodec.<init>(CompressionCodec.scala:152)
        ... 20 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
        at org.apache.spark.io.SnappyCompressionCodec$.liftedTree1$1(CompressionCodec.scala:169)
        ... 23 more
</pre>

我可以在类路径中看到 snappy-java 和 snappy-0.2。我正在使用: dse spark --conf spark.cassandra.auth.username= --conf spark.cassandra.auth.password=

什么可能导致这个错误?

【问题讨论】:

    标签: apache-spark cassandra datastax datastax-enterprise spark-cassandra-connector


    【解决方案1】:

    在我的情况下,这个错误是由 /tmp 被挂载 noexec 引起的。在我的 spark executor 选项中设置 java.io.tmpdir 或 org.xerial.snappy.tempdir 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2013-08-08
      • 2020-09-27
      • 2012-08-26
      • 2015-10-29
      相关资源
      最近更新 更多