【发布时间】:2015-07-23 21:10:21
【问题描述】:
当我使用 spark-submit 运行以下简单的 Spark 程序时:
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
}
}
我在“val maps=list.toMap”这一行得到了 java.lang.NoSuchMethodError。 但在 spark-shell 或简单的 scala 中,它没有问题:
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”方法,我在 spark-submit 中缺少什么?我使用“sbt package”编译程序并且没有问题。谢谢!
P.S: build.sbt 文件如下:
name := "TEST2"
version := "1.0"
scalaVersion := "2.11.6"
【问题讨论】:
-
也许您可以在问题中包含完整的错误消息。
-
我对我的 spark-1.2.0 &scala 2.10.4 执行了你的代码,它在 spark-submit 上没有任何错误。在 sbt 中尝试 scalaVersion := "2.10.4"。注意:到目前为止,spark-all-versions 都针对 2.10.4,而不是 2.11.x
-
已更改为 2.10.4 但仍然相同。您是否专门设置了 CLASSPATH?但是“toMap”是scala中一个非常基本的方法,很奇怪,可以通过spark-submit找到它。我在每个节点上测试了这个方法可以正常工作。
-
我在 Spark 1.3.0 (CDH 5.4.4) 上遇到了同样的问题,但是将 scala 版本设置为 2.10.4 确实为我解决了这个问题。
标签: apache-spark