У меня есть базовый RDD [Object], на котором я применяю карту с хеш-функцией на значения Object, используя nextGaussian и nextDouble scala. И когда я печатаю значения, они меняются при каждой печатиMy RDD меняет свои значения
def hashmin(x:Data_Object, w:Double) = {
val x1 = x.get_vector.toArray
var a1 = Array(0.0).tail
val b = Random.nextDouble * w
for(ind <- 0 to x1.size-1) {
val nG = Random.nextGaussian
a1 = a1 :+ nG
}
var sum = 0.0
for(ind <- 0 to x1.size-1) {
sum = sum + (x1(ind)*a1(ind))
}
val hash_val = (sum+b)/w
val hash_val1 = (x.get_id,hash_val)
hash_val1
}
val w = 8
val rddhash = parsedData.map(x => hashmin(x,w))
rddhash.foreach(println)
rddhash.foreach(println)
Я не понимаю, почему. Заранее спасибо.
Первый вариант не решает проблему, если rdd пересматривается, например, из-за отсутствия достаточной памяти. – abalcerek
@ user52045 вам нужно будет использовать альтернативный метод «persist (...)» и обеспечить уровень хранения. 'MEMORY_AND_DISK_SER'. 'cache' является сокращением для' persist (StorageLevel.MEMORY). Но в целом это должно служить цели. – maasg
Из того, что я понимаю, это минимизирует пересчет, но нет гарантии, что он вообще не будет пересчитан. – abalcerek