我有一个RDD,其结构如下:
((user_id,item_id,rating))
让我们将此RDD称为培训
然后还有另一个具有相同结构的rdd:
((user_id,item_id,rating))
并将此rdd作为测试
我想确保测试中的数据不会出现在每个用户的列车中。所以,让我们说
train = {u1,item2: u1,item4 : u1,item3} test={u1,item2:u1, item5}
我想确保从u1训练数据中删除item2。
所以我开始做的就是groupBy rdd(s)(user_id,item_id)
val groupedTrainData = trainData.groupBy(x => (x._1, x._2))
但我觉得这不是要走的路。
答案 0 :(得分:3)
您需要PairRDDFunctions.subtractByKey
:
def cleanTrain(
train: RDD[((user, item), rating)],
test: RDD[((user, item), rating)]) =
train.subtractByKey(test)