spark中 进行高维矩阵的SVD分解(2)

由于大型矩阵的奇异值分解,在普通的单机上是无法计算的,所以只能在spark集群上计算

 

在集群上计算会遇到一个问题,调用   “ M.computeSVD(5000, true,1.0E-9d)” 时,A=U*s*V  分解的s向量存储,V矩阵存储正常,但是分解的左奇异矩阵U默认为rowmatrix矩阵,这个矩阵存储的(存储代码:U.rows.saveAsTextFile("hdfs://10.67.89.240:9000/outsvd/big_UUT1"))时候,发现存储结果为为好几部分 eg:part-00000、

part-00001、part-00002.....等,所以想办法让输出结果为一个 (存储代码:U.rows.repartition(1).saveAsTextFile("hdfs://10.67.89.240:9000/outsvd/big_UUT1"))

但是发现我求出的矩阵U  里面应用的顺序不对,比如按道理是 part-00001+part-00000+part-00002 的顺序 ,但是结果按照part-00000+part-00001+part-00002的顺序来的,

尝试着输出多次发现U矩阵的结果是不确定的 就是因为 几个输出的part部分汇总的问题,所以一直不知道该怎么搞,还是希望懂的人能够给与建议

我这里是一个替代方案:就是先计算 A矩阵的svd分解存储 分解的右奇异矩阵V,在对A进行转秩,再次存储V,这样就相当于很好的存储了A矩阵的 U 、V奇异矩阵了,但是效率不高了

 

//***********************************************

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值