【发布时间】:2017-01-11 15:01:01
【问题描述】:
我有不使用 mllib 的矩阵加法示例代码
val result = rdd1.zip(rdd2)
.map(y => {
val res = y._1.zip(y._2)
.map { items: (Double, Double) =>
(items._1 + items._2)
}
res.mkString(delimiter)
})
请帮我把两个rdds相乘
【问题讨论】:
-
您在上面的代码中遇到的问题是什么?请详细说明
-
这段代码没有问题。但我不知道如何为 multiplication 做到这一点。此示例代码用于加法而不是乘法
-
矩阵为
RDD[Array[T]]的矩阵乘法不是一个小问题(如果您实际上是指Matrix Multiplication而不是元素乘法)。实际上,即使是可接受的解决方案,也需要付出巨大的努力。据我了解,您甚至可以忘记获得一个体面的实施,而无需花费整整 4-5 天的时间。我强烈建议您使用 mlib。 -
原因是矩阵乘法中的各种操作需要基于索引的元素访问......这对于RDD来说非常低效。但是您可以从基于矩阵乘法的属性
A(B+C) = AB+AC的“初学者”解决方案开始。 -
@AkhilaV 我也强烈推荐使用 MLLib 的 Matrix 类。你不应该使用 collect ,因为它可能会导致驱动程序出现 OutOfMemory 并且会很慢
标签: scala apache-spark