我正在尝试运行一个简单的测试火花工作。当我添加spark-cassandra连接器(v.1.2.0或v.1.2.1)时,作业失败。
这是我的构建文件:
name := "spark test"
version := "1.0"
scalaVersion := "2.10.4"
resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.2.1",
"com.datastax.spark" %% "spark-cassandra-connector" % "1.2.1")
这是源代码:
package com.xxx.test
import com.datastax.spark.connector._
import org.apache.spark.{SparkConf, SparkContext}
object Test {
def main( args: Array[String] ) {
val conf = new SparkConf()
.set("spark.executor.home", "/home/ubuntu/spark-1.2.1-bin-hadoop2.4")
.setMaster("local[*]")
// .setMaster("spark://10.14.56.139:7077")
.setAppName("Test")
val sc = new SparkContext( conf )
val numbers = sc.parallelize( 1 to 100 )
numbers.map( _.toDouble ).count
}
}
正如您所看到的,我并没有真正使用连接器。我想这样做,但是当我这样做时抛出并且错误,我试图将其隔离以查看它的来源。现在,当我将连接器版本更改为1.2.1时,发生相同的错误(见下文),而不是在我使用1.2.0-rc3时或者当我完全删除依赖项(和导入)时。由于连接器的github页面建议使用1.2.1,我想这样做。这是我得到的错误:
15/05/20 09:41:47 ERROR Executor: Exception in task 1.0 in stage 0.0 (TID 1)
java.io.IOException: java.lang.ClassNotFoundException: scala.collection.immutable.Range
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1078)
当我在群集上运行它时(setMaster(“spark://10.14.56.139:7077”))我得到了一个不同的错误,但仍然是一个致命错误:
15/05/20 10:18:55 ERROR TaskResultGetter: Exception while getting task result
java.io.IOException: java.lang.ClassNotFoundException: scala.None$
at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1078)
我想在我们的生产环境中使用推荐的1.2.1版本,所以如果你能帮我弄清楚发生了什么,那就太好了。
我正在使用sbt v.1.13.8和ubuntu 14.04
答案 0 :(得分:2)
首先看看你的jar中似乎没有一些核心scala库。我建议构建一个程序集jar(如果使用spark-submit脚本提交给现有集群,你可以标记spark-core)。