Совершенно новый для Apache Spark, и я немного смущен, как сделать обновления для значения, которое находится за пределами итерации .mapTriplets
в GraphX. Смотрите ниже:Как получить доступ к значениям за пределами цикла Spark GraphX .map?
def mapTripletsMethod(edgeWeights: Graph[Int, Double], stationaryDistribution: Graph[Double, Double]) = {
val tempMatrix: SparseDoubleMatrix2D = graphToSparseMatrix(edgeWeights)
stationaryDistribution.mapTriplets{ e =>
val row = e.srcId.toInt
val column = e.dstId.toInt
var cellValue = -1 * tempMatrix.get(row, column) + e.dstAttr
tempMatrix.set(row, column, cellValue) // this doesn't do anything to tempMatrix
e
}
}
Я предполагаю, что это связанно с конструкцией с RDD
и нет простого способа обновить значение tempMatrix
. Когда я запускаю приведенный выше код, метод tempMatrix.set
ничего не делает. Было довольно сложно попытаться выполнить эту проблему в отладчике.
У кого-нибудь есть легкое решение? Спасибо!
Редактировать
Я сделал обновление выше, чтобы показать, что stationaryDistribution
представляет собой график РДД.
спасибо. я определенно должен более подробно рассмотреть, как работают RDD. Я попытаюсь это сделать и вернусь к вам, и, возможно, обновите свой ответ с помощью некоторого примера кода. Благодаря! – crockpotveggies