我是spark的新手,我正试图找到一些关于我已经转换成两个独立Dataframe的数据列表的具体信息。
这两个Dataframe是:
Users: item_Details:
user_id | item_id item_id | item_name
----------------- ----------------------
1 | 123 123 | phone
2 | 223 223 | game
3 | 423 423 | foo
2 | 1223 1223 | bar
1 | 3213 3213 | foobar
我需要找到所有对用户有超过50个共同的项目和项目的数量排序。不能有重复项,这意味着只有一组userid1和userid2。
结果需要如下所示:
user_id1 | user_id2 | count_of_items | list_of_items
-------------------------------------------------------------
1 | 2 | 51 | phone,foo,bar,foobar
2条答案
按热度按时间4si2a6ki1#
有一种方法:
装配
item pairs
通过自连接的每个不同用户对生成
common items
从item pairs
使用自定义项按特定的公用项计数筛选结果数据集
如下图所示:
如果需要通用项目名称而不是项目ID,则可以加入
item_details
在上述步骤中对项目名称进行汇总;或者,可以分解现有的common item ids
加入item_details
还有一个collect_list
按用户对聚合:ukxgm1gy2#
另一个解决方案,不使用自定义项。因为我们需要公共项,所以可以在joinexprs本身中给出匹配。看看这个
结果