我是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 ......可能吗?
答案 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"))
谢谢, 阿拉文斯