2014-10-06 59 views
5

我试图让DataStax spark cassandra连接器工作。我在IntelliJ中创建了一个新的SBT项目,并添加了一个类。这个类和我的sbt文件在下面给出。创建火花上下文似乎工作,但是,当我取消注释我尝试创建cassandraTable的行时,出现以下编译错误:火花cassandra连接器和SBT编译错误

错误:scalac:错误的符号引用。 CassandraRow.class中的签名是指包含org.apache.spark.sql的术语催化剂 ,它不可用。 可能完全缺少当前类路径,或者类路径上的版本可能与编译CassandraRow.class时使用的版本不兼容。

Sbt对我来说是一种新鲜的东西,对于理解这个错误意味着什么(当然还有如何解决它),我将不胜感激。

name := "cassySpark1" 

version := "1.0" 

scalaVersion := "2.10.4" 

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.1.0" 

libraryDependencies += "com.datastax.spark" % "spark-cassandra-connector" % "1.1.0" withSources() withJavadoc() 

libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector-java" % "1.1.0-alpha2" withSources() withJavadoc() 

resolvers += "Akka Repository" at "http://repo.akka.io/releases/" 

而我的等级:

import org.apache.spark.{SparkConf, SparkContext}

import com.datastax.spark.connector._

object HelloWorld { def main(args:Array[String]): Unit ={ System.setProperty("spark.cassandra.query.retry.count", "1")

val conf = new SparkConf(true) 
    .set("spark.cassandra.connection.host", "cassandra-hostname") 
    .set("spark.cassandra.username", "cassandra") 
    .set("spark.cassandra.password", "cassandra") 

val sc = new SparkContext("local", "testingCassy", conf) 

> //val foo = sc.cassandraTable("keyspace name", "table name")

val rdd = sc.parallelize(1 to 100) 
val sum = rdd.reduce(_+_) 

println(sum) } } 

回答

9

您需要添加spark-sql到依赖性列表

libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.1.0" 
+0

是......就是这样。好像文档有点过时了。谢谢。 – ashic 2014-10-07 08:22:10

0

添加到项目的pom.xml文件库的依赖。看起来他们已经在新的重构中改变了Vector.class依赖关系的位置。