saveToCassandra на основе контента из RDD

Я использую искру в scala для создания универсального приложения для распараллеливания http-вызовов, и меня беспокоит, можно ли будет выполнить действие saveToCassandra на основе содержимого RDD, поскольку ответы должны попадать в разные таблицы.

Чтобы внести больше ясности,

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

куда

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

Затем каждый запрос сопоставляется со списком кортежей, которые нужно сохранить в cassandra, но в зависимости от источника данных в запросе данные для google должны попасть в таблицу cassandra для google, а для yahoo — в свою собственную таблицу.

ТИА


person Paulo    schedule 05.11.2015    source источник


Ответы (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(???)) 
}
person zero323    schedule 05.11.2015
comment
блестяще!. Спасибо за это. - person Paulo; 07.11.2015