在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