spark-scala计算每个小组级别的有效方式

时间:2015-08-06 20:52:39

标签: scala apache-spark

我有以下rdd

(000740C7AD5274,8884165739991289,0)
(000740C7AD5274,5247914560952402,1)
(000740C7AD5274,6366183814312296,0)
(000740C7AD5274,8416039242203850,1)
(000740C7AD5274,8767784019249585,0)
(000740C7AD5274,8875366436847528,0)
(000740C7AD5274,6878583261589229,0)
(000740C7AD5274,7480419089929113,1)
(000740C7AD5274,7480419089929113,0)
(000740C7AD5274,8848143710281107,0)
(000740C7AD5274,7617664942496492,1)
(000740C7AD5274,4905980213247549,0)
(000740C7AD5274,6806506896473929,1)

这表示userId,productId,BuyorNot信息。我想从这些数据中生成一组统计数据,例如。每个用户购买的商品数量和每个产品的用户数量。

我开始如下:

val userProduct = userProductRDD.groupBy(x => (x._1, x._2)).flatMap(k => (k._1, if (k._2._3) != 0) 1 else 0))

但这并不能给(userId, distinct_bought_count) 前进的一些指导意义很大。

1 个答案:

答案 0 :(得分:1)

简单地:

query.whereKey("name", matchesRegex:searchBar.text, modifiers:"i")