Cassandra Scala Spark - 将RDD保存到Cassandra

时间:2015-10-30 14:03:40

标签: scala cassandra apache-spark

我有以下RDD

RDD[(String, Seq[((String, Double), Int)])]

一个例子是:

RDD["a", Seq[(("b", 2.0), 1), (("c", 3.0), 2)]]

我想使用以下架构插入我的Cassandra表

String (PK), String, Double, Int

最后,对于给定的示例,我将在我的数据库中有以下内容

"a", "b", 2.0, 1
"a", "c", 3.0, 2

Scala代码是做什么的?我尝试使用saveToCassandra,但我的输入不是RDD[(String, String, Double, Int)]的形式。我应该首先压扁它吗?

1 个答案:

答案 0 :(得分:1)

这里所需要的只是flatMap

import org.apache.spark.rdd.RDD

val rdd: RDD[(String, Seq[((String, Double), Int)])] = ???
val flattened: RDD[(String, String, Double, Int)] = rdd.flatMap{
  case (k, vs) => vs.map{case ((v1, v2), v3) => (k, v1, v2, v3)}}