scala – Spark – 如何根据项目评级创建稀疏矩阵
发布时间:2020-12-16 09:28:31 所属栏目:安全 来源:网络整理
导读:我的问题相当于R-related post Create Sparse Matrix from a data frame,除了我想在Spark上执行相同的操作(最好是在Scala中). data.txt文件中的数据样本,从中创建稀疏矩阵: UserID MovieID Rating2 1 13 2 14 2 16 2 17 2 1 所以最后列是电影ID,行是用户ID
我的问题相当于R-related post
Create Sparse Matrix from a data frame,除了我想在Spark上执行相同的操作(最好是在Scala中).
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文件(没有标题)上进行地图RDD转换,将值转换为Integer,但是……我找不到用于稀疏矩阵创建的函数. 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) }) ...? 解决方法
最简单的方法是将Ratings映射到MatrixEntries创建CoordinateMatrix:
import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix,MatrixEntry} val mat = new CoordinateMatrix(ratings.map { case Rating(user,movie,rating) => MatrixEntry(user,rating) }) CoordinateMatrix可以分别使用toBlockMatrix,toIndexedRowMatrix和toRowMatrix进一步转换为BlockMatrix,IndexedRowMatrix,RowMatrix. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- shell – 递归列出所有目录和文件
- angular – ERROR in Error遇到静态解析符号值.调用函数’?
- WebService笔记之即时发布(Axis1.4)
- Bootstrap媒体对象学习使用
- 当没有当前的规范时,使用了angularjs – ‘expect’,这可能
- scala – Spark mapWithState将所有数据混洗到一个节点
- angularjs – Angular材料mdMenu onclose在firefox中滚动页
- Metronic一个前端框架 (Bootstrap 主题和模板)
- webservice大文件传输
- BootstrapTable refresh 方法使用实例简单介绍