【发布时间】:2016-10-03 00:10:09
【问题描述】:
嗨,我是 spark 和 scala 的新手,我在将数据保存到 cassandra 时遇到了一些问题,下面是我的场景
1) 我从我的 java 类到 scala 类获取用户定义对象的列表(比如包含名字、姓氏等的用户对象),到这里为止,我可以访问用户对象并能够打印它的内容
2) 现在我想使用 spark 上下文将该 usersList 保存到 cassandra 表中,我已经经历了许多示例,但在每个地方我都看到使用我们的 caseClass 创建 Seq 和硬编码值,然后保存到 cassandra,我已经尝试过,并且对我来说工作正常,如下所示
import scala.collection.JavaConversions._
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import com.datastax.spark.connector._
import java.util.ArrayList
object SparkCassandra extends App {
val conf = new SparkConf()
.setMaster("local[*]")
.setAppName("SparkCassandra")
//set Cassandra host address as your local address
.set("spark.cassandra.connection.host", "127.0.0.1")
val sc = new SparkContext(conf)
val usersList = Test.getUsers
usersList.foreach(x => print(x.getFirstName))
val collection = sc.parallelize(Seq(userTable("testName1"), userTable("testName1")))
collection.saveToCassandra("demo", "user", SomeColumns("name"))
sc.stop()
}
case class userTable(name: String)
但这里我的要求是使用来自我的 usersList 的动态值,而不是硬编码值,或任何其他方式来实现这一点。
【问题讨论】:
-
有多少用户?这些值存储在哪里?
-
将有多达 20k 用户,actullay 我从其他一些 javaClass 获得该列表并需要存储在 cassandra 表中
-
只要你在并行化,它应该可以工作。如何从“usersList”创建一个包含“userTable”所有案例类对象的 Seq 并并行化并保存?
-
如果您可以发布错误以查看究竟出了什么问题,那就很容易了。
-
@Sreekar 我没有收到任何错误,我正在寻找将列表数据插入到 cassandra 表中的各种方法
标签: java scala apache-spark cassandra