怎么用SQL计算可能认识的人
用户关系数据可以有很多应用,比如说好友动态PUSH,朋友圈兴趣发现,好友推荐等等。推荐可能认识的人,属于好友推荐的一种。平台应该把沉淀、培养用户关系作为平台的目标之一。当用户在平台上积累了足够的关系网,用户离开平台的沉没成本就变得很大,所以你看现在人们已经离不开微信。

可能认识的人,主要是基于用户的好友关系计算。假设有用户A,B,C其中AB是朋友,AC也是朋友,那么B和C很大可能也是认识的朋友。这时候向B推荐C或者向C推荐B,他们互相加好友的概率相对就大一些。需要注意一下,这里需要双向关注的强用户关系,单向关注并不在考虑范围之内(计算互相关注的SQL应该怎么写)。
这是一个用SQL就能解决的好问题。假设朋友关系表的名字叫做table_friends,里面有两列user_1,user_2,含义是user_1向user_2提出了好友申请,并且申请通过。
先把最终的SQL摆出来:
select
a.base_user,
a.possible_user,
sum(1) as common_friends_count -- 5、sum
from
(

本文介绍了如何使用SQL来计算用户可能认识的人,主要步骤包括:union_all获取双向好友关系,collect_set聚合好友,explode两次展开,filter过滤无效链接,最后sum计算共同好友数量。针对内存压力,提出了只展开一次的优化策略,利用UDF进行array操作。
最低0.47元/天 解锁文章
842

被折叠的 条评论
为什么被折叠?



