Spark SQL将数据插入Cassandra

时间:2016-08-31 11:13:32

标签: scala apache-spark cassandra apache-spark-sql

我是Scala和Apache Spark的初学者,我遇到了以下问题。

我正在尝试使用spark SQL将数据插入到Cassandra table..user(name,favorite_food)中。

代码段看起来像这样

val conf = new SparkConf(true)
  .set("spark.cassandra.connection.host", "127.0.0.1")

val sc = new SparkContext("local", "test", conf)
val sqlC = new CassandraSQLContext(sc)
sqlC.setKeyspace("myKeySpace")
sqlC.sql("INSERT into user (name,favorite_food) values ('John Doe','brownies')")

但是我遇到了这个问题 线程“main”中的异常java.lang.RuntimeException:[1.13]失败:``table''预期但找到标识符用户

我正在运行Cassandra DB的本地实例

My Maven POM看起来像

<dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.10</artifactId>
            <version>1.6.2</version>
        </dependency>
</dependencies>

我的问题是; 请你告诉我为什么我面临以下错误(插入语句在cassandra shell上完全正常) 线程“main”中的异常java.lang.RuntimeException:[1.13]失败:``table''预期但找到标识符用户

PS:我知道我可以使用datastax提供的spark连接器将数据保存到Cassandra,但是我想使用Spark SQL ......可能吗?

1 个答案:

答案 0 :(得分:2)

我们无法使用Cassandra Context向表中插入数据。 Spark没有提供该选项。

你会尝试这一点肯定会有效,

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import com.datastax.spark.connector._
import com.datastax.spark.connector.UDTValue 

//we need define a class
//case class name(column name: datatype,column name: datatype)

case class model(name: String, favorite_food: String)

// define sequence to insert a data 
// val coll = sc.parallelize(Seq(classname(data, data), model(data, data)))

val collection = sc.parallelize(Seq(model("John Doe", "brownies")))

 //then save to cassandra
 //collection.saveToCassandra("keyspace_name", "table_name", SomeColumns("col name", "col name"))

collection.saveToCassandra("myKeySpace", "user", SomeColumns("name", "favorite_food"))

谢谢, 阿拉文斯