Когда я побежал с искрой подать на следующей простой Спарк программы:NoSuchMethodError для «list.toMap» в искру подать
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.SparkContext
import org.apache.spark._
import SparkContext._
object TEST2{
def main(args:Array[String])
{
val conf = new SparkConf().setAppName("TEST")
val sc=new SparkContext(conf)
val list=List(("aa",1),("bb",2),("cc",3))
val maps=list.toMap
}
}
Я получил java.lang.NoSuchMethodError для линии «VAL карты = list.toMap». Но в искровой скорлупе или просто Скале, он не имеет никаких проблем:
scala> val list=List(("aa",1),("bb",2),("cc",3))
list: List[(String, Int)] = List((aa,1), (bb,2), (cc,3))
scala> val maps=list.toMap
maps: scala.collection.immutable.Map[String,Int] = Map(aa -> 1, bb -> 2, cc -> 3)
Так, чтобы использовать метод «toMap», что я не хватает в искровым представить? Я использую «пакет sbt» для компиляции программы и без проблем. Благодаря!
P.S: файл build.sbt как:
name := "TEST2"
version := "1.0"
scalaVersion := "2.11.6"
Возможно вы можете включить полное сообщение об ошибке в вопрос. –
Я выполнил ваш код против моей искры-1.2.0 и scala 2.10.4, он работал без каких-либо ошибок на spark-submit. попробуйте scalaVersion: = "2.10.4" в sbt. Примечание: до сих пор искровые все версии являются buit против 2.10.4, а не 2.11.x –
Изменено на 2.10.4, но все равно. Вы специально настроили свой CLASSPATH? Но «toMap» является таким базовым методом в scala, довольно странным, что его можно найти с помощью spark-submit. Я тестировал на каждом узле, что этот метод работает нормально. – user1460691