我认为最好的方法是输入数据映射到的元组的RDD (user, (date, item1, item2))
所以RDD会userRdd: RDD[(Int, (Date, Int, Double))]
从这里你可以创建一个reducer,它将采用两个元组并生成另一个相同的格式,即具有更大日期值的元组:
reduceMaxDate(a: (Date, Int, Double), b: (Date, Int, Double)) : (Date, Int, Double) = { if(a._1 > b._1) a else b }
在这里,您可以通过以下方式找到每个用户的最大值:
userRdd.reduceByKey(reduceMaxDate).
这将产生具有每个用户的最大时间戳的元组.
我认为最好的方法是输入数据映射到的元组的RDD (user, (date, item1, item2))
所以RDD会userRdd: RDD[(Int, (Date, Int, Double))]
从这里你可以创建一个reducer,它将采用两个元组并生成另一个相同的格式,即具有更大日期值的元组:
reduceMaxDate(a: (Date, Int, Double), b: (Date, Int, Double)) : (Date, Int, Double) = { if(a._1 > b._1) a else b }
在这里,您可以通过以下方式找到每个用户的最大值:
userRdd.reduceByKey(reduceMaxDate).
这将产生具有每个用户的最大时间戳的元组.