【问题标题】:Spark SQL to insert data into CassandraSpark SQL 将数据插入 Cassandra
【发布时间】:2017-01-07 22:54:27
【问题描述】:

我是 Scala 和 Apache Spark 的初学者,我面临以下问题。

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

sn-p的代码是这样的

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')")

但是我面临这个问题 线程“主”java.lang.RuntimeException 中的异常:[1.13] 失败:预期“表”,但找到了标识符用户

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

我的 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 上运行良好) 线程“主”java.lang.RuntimeException 中的异常:[1.13] 失败:预期为“表”,但找到了标识符用户

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

【问题讨论】:

  • 我打赌user是一个保留字,如果你引用它"user"它可能会起作用

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


【解决方案1】:

我们无法使用 Cassandra 上下文向表中插入数据。 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"))

谢谢, 阿拉文斯

【讨论】:

  • 在上面的例子中,你提到了模型(“John Doe”,“brownies”),所以如果我有值列表并动态创建模型而不是像“John Doe”这样的硬编码,我该怎么办, “布朗尼”并保存到 cassandra
  • @aravinth 新 API 类似于 o_model_family.write.format("org.apache.spark.sql.cassandra") .options(Map( "table" -> columnFamilyName, "keyspace" - > keyspace )) .mode(SaveMode.Append) .save() 如何使用新的 spark api 将查询插入到 cassandra 表中?
猜你喜欢
  • 2016-07-18
  • 2017-05-06
  • 1970-01-01
  • 2021-03-16
  • 2017-10-12
  • 2018-03-11
  • 2016-05-14
  • 1970-01-01
  • 2022-12-12
相关资源
最近更新 更多