spark-scala:如果另一个RDD中不存在RDD的记录,则过滤RDD

时间:2015-08-03 21:21:54

标签: scala apache-spark

我有一个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))

但我觉得这不是要走的路。

1 个答案:

答案 0 :(得分:3)

您需要PairRDDFunctions.subtractByKey

def cleanTrain(
  train: RDD[((user, item), rating)],
  test: RDD[((user, item), rating)]) =
  train.subtractByKey(test)