添加spark cassandra连接器作为依赖导致我的工作失败

时间:2015-05-20 17:20:36

标签: cassandra apache-spark

我正在尝试运行一个简单的测试火花工作。当我添加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

1 个答案:

答案 0 :(得分:2)

首先看看你的jar中似乎没有一些核心scala库。我建议构建一个程序集jar(如果使用spark-submit脚本提交给现有集群,你可以标记spark-core)。