我在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
答案 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(???))
}