3
我的問題是等同於R-相關帖子Create Sparse Matrix from a data frame,但我想在星火(最好在斯卡拉)執行同樣的事情。星火 - 如何創建項目收視率稀疏矩陣
從正被創建的稀疏矩陣中data.txt文件數據的樣品:
UserID MovieID Rating
2 1 1
3 2 1
4 2 1
6 2 1
7 2 1
所以最終的列是電影ID和行是用戶ID
1 2 3 4 5 6 7
1 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0
3 0 1 0 0 0 0 0
4 0 1 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 1 0 0 0 0 0
7 0 1 0 0 0 0 0
我已經開始通過對data.txt
文件(沒有標頭)進行map
RDD轉換將值轉換爲整數,但後來......我找不到一個用於稀疏矩陣創建的函數。
val data = sc.textFile("/data/data.txt")
val ratings = data.map(_.split(',') match { case Array(user, item, rate) =>
Rating(user.toInt, item.toInt, rate.toInt)
})
...?
我正在做類似於Python的東西:'mat = CoordinateMatrix(groupped_df.rdd.map(lambda r:MatrixEntry(r.userId,r.itemId,r.rating)))''。但是這不包含重複項目。所以,我的獨特用戶是4300,我的獨特用戶是2800,最後,我得到了座標矩陣是18300到90200。所以,這是一個正常的行爲,我該如何刪除重複? –
@JimVer我會說這取決於業務邏輯。如果您對同一個用戶有重複的評分,那麼首先總結(平均數,中位數,最近一次)您的數據可能是有意義的。 – zero323