saveToCassandra基于RDD的内容

时间:2015-11-05 14:53:17

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

我在scala中使用spark来构建一个通用应用程序来并行化http调用,我担心的是,是否可以根据RDD的内容执行saveToCassandra操作,因为响应应该进入不同的表。

为了提供更清晰,

val queries: List[Query] = List(Query("google", "fish"), Query("yahoo", "chicken"))
val inputRDD = sc.parallelize(queries)

其中

case class Query(dataSource: String, query: String)

然后将每个查询映射到要保存到cassandra中的元组列表,但基于查询中的数据源,谷歌的数据应该进入谷歌的cassandra表和雅虎自己的表。

TIA

1 个答案:

答案 0 :(得分:1)

我只想过滤并保存单个子集:

val keywords = Map("google" -> "googletab", "yahoo" -> "yahootab")
val keyspace: String = ???

val subsets = keywords.keys.map(k => 
  (k -> inputRDD.filter{case Query(x, _) => x == k}))

subsets.foreach{ case (k, rdd) =>
  rdd.saveToCassandra(keyspace, keywords(k), SomeColumns(???)) 
}