如何在scala和spark中从RDD中排除一些数据?

时间:2016-03-30 02:45:04

标签: scala apache-spark

我是scala和spark的新手。现在我有一个RDD和这样的数据:

[
 (key1, compactbuffer(item1, item2, item3)),
 (key2, compactbuffer(item3, item4))
 .....
]

另一个RDD是:

[item1, item2, item3, item4, item5, item6] //已订购。

然后我想得到这样的结果:

[
   (key1, compactbuffer(item4, item5, item6), 
   (key2, compactbuffer(item1, item2, item5, item6)
]

我该如何实现?

1 个答案:

答案 0 :(得分:1)

假设两个RDDs被命名为groupedmaster,则应该这样做:

grouped.cartesian(master).filter(t => {
  var found = false;
  t._1._2.foreach(r => {if (r._2 == t._2) found = true});
  !found
}).map(t => (t._1._1, t._2)).groupBy(x => x._1)