我开始用Cassandra测试Spark。 我从Cassandra获取数据,它有两列(主键,设置)。
val sc = new SparkContext("spark://172.31.32.224:7077","test", conf)
val rdd = sc.cassandraTable("test", "table").select("pk", "lists")
.map(l => (l.get[String]("pk"), l.getList[String]("lists")))
但是此代码正在映射(String, Seq[String])
我想打破Seq[String]
并与" pk"成对,例如
((pk1, list(1)), (pk1, list(2), (pk1, list(3)))
有办法吗?
答案 0 :(得分:3)
将map
替换为flatmap
并创建一组对:
.flatMap{l =>
val pk = l.get[String]("pk")
l.getList[String]("lists").map(item => (pk,List(item)))
}