Scala 找不到apachespark方法sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/cleaner;

Scala 找不到apachespark方法sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/cleaner;,scala,apache-spark,apache-spark-standalone,spark-shell,Scala,Apache Spark,Apache Spark Standalone,Spark Shell,我在spark shell中运行自动数据处理脚本时遇到了这个问题。前两个迭代工作正常,但迟早会遇到这个错误。我在谷歌上搜索了这个问题,但没有找到完全匹配的。其他类似问题不属于spark的范畴。我想这可能与JVM版本有关,但我不知道如何解决这个问题 我在spark独立集群中使用了两台机器 机器1号Java信息: java 10.0.2 2018-07-17 Java(TM)SE运行时环境18.3(构建10.0.2+13) Java HotSpot(TM)64位服务器VM 18.3(构建10.0.2

我在spark shell中运行自动数据处理脚本时遇到了这个问题。前两个迭代工作正常,但迟早会遇到这个错误。我在谷歌上搜索了这个问题,但没有找到完全匹配的。其他类似问题不属于spark的范畴。我想这可能与JVM版本有关,但我不知道如何解决这个问题

我在spark独立集群中使用了两台机器

机器1号Java信息:

java 10.0.2 2018-07-17
Java(TM)SE运行时环境18.3(构建10.0.2+13)
Java HotSpot(TM)64位服务器VM 18.3(构建10.0.2+13,混合模式)

机器2号Java信息:

openjdk 10.0.2 2018-07-17
OpenJDK运行时环境(构建10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64位服务器虚拟机(构建10.0.2+13-Ubuntu-1ubuntu0.18.04.4,混合模式)

错误信息:
WARN TaskSetManager:66-在第28.0阶段丢失任务3.0(TID 1368169.254.115.145,执行者1):
java.lang.NoSuchMethodError:sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/cleaner;
位于org.apache.spark.storage.StorageUtils$.cleanDirectBuffer(StorageUtils.scala:212)
位于org.apache.spark.storage.StorageUtils$.dispose(StorageUtils.scala:207)
位于org.apache.spark.storage.StorageUtils.dispose(StorageUtils.scala)
位于org.apache.spark.io.NioBufferedFileInputStream.close(NioBufferedFileInputStream.java:130)
位于java.base/java.io.FilterInputStream.close(FilterInputStream.java:180)
位于org.apache.spark.io.ReadAheadInputStream.close(ReadAheadInputStream.java:400)
位于org.apache.spark.util.collection.unsafe.sort.UnsafeSorterSpillReader.close(UnsafeSorterSpillReader.java:152)
位于org.apache.spark.util.collection.unsafe.sort.UnsafeSorterSpillReader.loadNext(UnsafeSorterSpillReader.java:124)
位于org.apache.spark.util.collection.unsafe.sort.UnsafeExternalSorter$spillableeditor.loadNext(UnsafeExternalSorter.java:590)
位于org.apache.spark.sql.execution.UnsafeKVExternalSorter$kvsorteritter.next(UnsafeKVExternalSorter.java:287)
位于org.apache.spark.sql.execution.aggregate.SortBasedAggregator$$anon$1.findNextSortedGroup(ObjectAggregationIterator.scala:276)
位于org.apache.spark.sql.execution.aggregate.SortBaseDaggerator$$anon$1.hasNext(ObjectAggregationIterator.scala:247)
位于org.apache.spark.sql.execution.aggregate.ObjectAggregationIterator.hasNext(ObjectAggregationIterator.scala:81)
位于scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:409)
位于org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:148)
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)上
在org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:55)上
位于org.apache.spark.scheduler.Task.run(Task.scala:121)
位于org.apache.spark.executor.executor$TaskRunner$$anonfun$10.apply(executor.scala:402)
位于org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:408)
位于java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
位于java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

在java.base/java.lang.Thread.run(Thread.java:844)

中,我通过将spark的java_HOME设置为Java8JDK,成功地解决了这个问题。这是一个非常新的问题,但是spark的开发者已经发现了它,请参见这里

官方网站提供的最新预编译spark于11月2日发布,该请求随后发生。希望以后的版本能够避免新版本的java出现这个问题