Scala Spark矩阵之外的分布式块矩阵
如何用相同大小的矩阵制作分布式块矩阵 例如,假设A,B是两个2乘2的mllib.linalg.matrix,如下所示 导入org.apache.spark.mllib.linalg.{Matrix,Matrix} 导入org.apache.spark.mllib.linalg.distributed.BlockMatrix val A:Matrix=Matrix.dense2,2,Array1.0,2.0,3.0,4.0 val B:Matrix=Matrix.dense2,2,Array5.0,6.0,7.0,8.0 val C=新块矩阵??? 如何首先从A,B生成RDD[Int,Int,Matrix],然后从A,B生成分布式块矩阵 我非常感谢您事先提供的任何意见或帮助。您可以先创建RDD[Int,Int,Matrix]来构建块矩阵 val块:RDD[Int,Int,Matrix]=sc.parallelizeSeq0,0,A,0,1,B 然后将其转换为块矩阵 val blockMatrix:blockMatrix=新BlockMatrixblocks,2,2 这将为您提供一个块矩阵,其形式为[a | B]。您可以通过首先创建RDD[Int,Int,Matrix]来构造块矩阵 val块:RDD[Int,Int,Matrix]=sc.parallelizeSeq0,0,A,0,1,B 然后将其转换为块矩阵 val blockMatrix:blockMatrix=新BlockMatrixblocks,2,2Scala Spark矩阵之外的分布式块矩阵,scala,apache-spark,apache-spark-mllib,Scala,Apache Spark,Apache Spark Mllib,如何用相同大小的矩阵制作分布式块矩阵 例如,假设A,B是两个2乘2的mllib.linalg.matrix,如下所示 导入org.apache.spark.mllib.linalg.{Matrix,Matrix} 导入org.apache.spark.mllib.linalg.distributed.BlockMatrix val A:Matrix=Matrix.dense2,2,Array1.0,2.0,3.0,4.0 val B:Matrix=Matrix.dense2,2,Array5.0
这将为您提供一个块矩阵,其形式为[a | B]。对!所以我需要先导入org.apache.spark.rdd.rdd并定义块的类型。我只是在使用sc.parallelize,但它不起作用。谢谢。你知道有没有办法从上面的blockMatrix中获取特定的块i,j?你可以通过访问底层块RDD来实现这一点。例如blockMatrix.blocks.filter{case x,y,matrix=>x==i&&y==j}将为您提供一个RDD[Int,Int,matrix],其中仅包含选定的块。对!所以我需要先导入org.apache.spark.rdd.rdd并定义块的类型。我只是在使用sc.parallelize,但它不起作用。谢谢。你知道有没有办法从上面的blockMatrix中获取特定的块i,j?你可以通过访问底层块RDD来实现这一点。例如,blockMatrix.blocks.filter{case x,y,matrix=>x==i&&y==j}将为您提供一个RDD[Int,Int,matrix],其中仅包含选定的块。