1
我在使用mllib.linalg中的RDD時遇到了一些哲學問題。在數值線性代數中,人們想要使用可變數據結構,但是由於在Spark中所有的東西(RDDs)都是不可變的,所以我想知道是否有辦法解決這個問題,特別是在我處理的情況下。按順序更新矩陣RDD的列
import org.apache.spark.mllib.linalg._
import breeze.numerics._
val theta = constants.Pi/64
val N = 1000
val Gk: Matrix = Matrices.dense(2, 2, Array(
cos(theta), sin(theta),
-sin(theta), cos(theta))
)
val x0: Vector = Vectors.dense(0.0, 1.0)
var xk = DenseMatrix.zeros(2, N + 1)
按順序思維,我想通過
for (k <- 0 to N - 1) {
xk(::, k + 1) := Gk * xk(::, k)
}
但在訪問/通過x0
,而正常情況下在斯卡拉/微風由xk(::, 0) := x0
完成更新xk
第一列和其他列mllib.linalg.Matrices沒有(適用於!)爲其定義的方法here。只是訪問一個列(行)反對不變性?如果我使用RowMatrix
怎麼辦?我可以訪問/更新行嗎?
我的矩陣可以是本地的(如上)或分佈式和 我想知道在一般情況下,如果上面的方法可以在功能性的方式來完成。
我會很感激任何評論或幫助。