java.lang.noSuchMethod ошибка: scala.Predef$.refArrayOps([Ljava/lang/Объект;)Lscala/коллекция/изменяемые/массивы; scala

#scala #apache-spark

Вопрос:

привет, я изучаю spark с помощью scala. я запускаю код, чтобы узнать, сколько слов в файле и частота каждого слова. но когда я запускаю код, возникает эта ошибка.

  java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
        at example.word_count$anonfun$2.apply(word_count.scala:19)
        at example.word_count$anonfun$2.apply(word_count.scala:19)
        at scala.collection.Iterator$anon$11.nextCur(Iterator.scala:484)
        at scala.collection.Iterator$anon$11.hasNext(Iterator.scala:490)
        at scala.collection.Iterator$anon$10.hasNext(Iterator.scala:458)
        at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:192)
        at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:62)
        at org.apache.spark.shuffle.ShuffleWriteProcessor.write(ShuffleWriteProcessor.scala:59)
        at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:99)
        at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:52)
        at org.apache.spark.scheduler.Task.run(Task.scala:131)
        at org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:497)
        at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:500)
        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)
 

это build.sbt

 val sparkVersion = "3.1.2"
ThisBuild / scalaVersion     := "2.11.12"
ThisBuild / version          := "0.1.0-SNAPSHOT"
ThisBuild / organization     := "com.example"
ThisBuild / organizationName := "example"

lazy val root = (project in file("."))
  .settings(
    name := "word_count",
  )


libraryDependencies   = Seq(
  "org.apache.spark" % "spark-core_2.11" % "2.4.5",
  
  "org.apache.spark" %  "spark-mllib_2.11" % "2.4.0",
  
  "org.apache.spark" % "spark-streaming_2.11" % "2.1.1",

  "org.apache.spark" % "spark-sql_2.11" % "2.1.0",
  
  "org.scalactic" %% "scalactic" % "3.2.10",

  "org.scalatest" %% "scalatest" % "3.2.10" % "test"
)

assemblyMergeStrategy in assembly := {
 case PathList("META-INF", xs @ _*) => MergeStrategy.discard
 case x => MergeStrategy.first
}
 

как это исправить, любая помощь будет признательна

Комментарии:

1. Объедините версии spark и убедитесь, что версия Scala везде одинакова

2. Спасибо за комментарий. однако что вы имеете в виду везде?