在pyspark 2.0我有这个数据帧:pyspark:多dataframes的交集
my_df = spark.createDataFrame([{'id': '0001', 'site': 'R1', 'visit': 100},
{'id': '0002', 'site': 'R1', 'visit': 50},
{'id': '0001', 'site': 'R2', 'visit': 100},
{'id': '0002', 'site': 'R2', 'visit': 50},
{'id': '0003', 'site': 'R3', 'visit': 60},
{'id': '0003', 'site': 'R4', 'visit': 60},
{'id': '0004', 'site': 'R3', 'visit': 40}])
描述用户id
,的访问web的site
多少次的名字,他/她访问该网站。
注意 - 不相关的理由 - 给予一定id
其visit
值始终是相同的(例如id
0001
始终100
为visit
值)。
因此,例如:身份证0001
访问100
次R1
网站。 特别是,我只有30个可能的网站和25k个不同的用户。到目前为止,据我所知,我的数据框的行是不可预知的,但肯定有超过200万。
我想计算每一对夫妇的网站(在这种情况下:R1
VS R2
,R1
VS R3
,R1
VS R4
,R2
VS R3
,R2
VS R4
等)用户的总访问量的总和他们有共同之处。
例如:
- 为情侣
R1
VSR2
我有两个共同的用户:R1
具有0001
和0002
,R2
具有0001
和0002
,所以交点是0001
和0002
和最后的总数量的访问次数是100+50=150
。 - 为新人
R1
VSR3
我没有共同的用户,以便总数为0
我的想法太琐碎,太缓慢。事实上,我将:在信道c1
的所有不可能性夫妇
- 迭代和由
c1
c2
- 滤波器和
c2
- 相交
id
S中的两个滤波dataframes的,总结相对visit
数
任何想法更好地解决这个问题?
你能描述你的数据?多少条目?有多少用户?网站? – eliasah
@eliasah 30个不同的网站,25k个不同的用户和超过200万行 – enneppi
然后,您可以为网站编制索引并创建矩阵条目。那么你将会处理高瘦的矩阵。但回答你的问题仍然可以相当宽泛。 – eliasah