9

サンプルをペアリングしようとしましたが、100 個のサンプルが 9900 個のサンプルになり、よりコストがかかるため、膨大な量のメモリが必要になります。スパークの分散環境で距離行列を計算するより効果的な方法は何ですか?

ここに私がしようとしている疑似コードのスニペットがあります

val input = (sc.textFile("AirPassengers.csv",(numPartitions/2)))
val i = input.map(s => (Vectors.dense(s.split(',').map(_.toDouble))))
val indexed = i.zipWithIndex()                                                                       //Including the index of each sample
val indexedData = indexed.map{case (k,v) => (v,k)}

val pairedSamples = indexedData.cartesian(indexedData)

val filteredSamples = pairedSamples.filter{ case (x,y) =>
(x._1.toInt > y._1.toInt)  //to consider only the upper or lower trainagle
 }
filteredSamples.cache
filteredSamples.count

上記のコードはペアを作成しますが、データセットに 100 個のサンプルが含まれている場合でも、filteredSamples (上記) をペアリングすると 4950 サンプルになり、ビッグデータには非常にコストがかかる可能性があります

4

3 に答える 3