我是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)
]
我该如何实现?
答案 0 :(得分:1)
假设两个RDDs
被命名为grouped
和master
,则应该这样做:
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)