DIMSUM导致内存问题

时间:2016-03-23 13:45:13

标签: scala apache-spark

我正在尝试使用DIMSUM算法计算大数据集的列相似性

群集配置是5个32GB RAM节点,每个节点有6个核心

spark-shell --driver-memory 21G --executor-memory 29G
 --conf    "spark.rdd.compress=true"   
--conf "spark.shuffle.memoryFraction=0.5" 
--conf   "spark.storage.memoryFraction=0.3"
 --conf "spark.kryoserializer.buffer.max=256m" 
--conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" 
--num-executors 5   --executor-cores 5

DIMSUM代码

val rows = sc.textFile(filename).map { line =>
val values = line.split(' ').map(_.toDouble)
Vectors.dense(values)
}
val mat = new RowMatrix(rows)


// Compute similar columns with estimation using DIMSUM
val simsEstimate = mat.columnSimilarities(0.2)

val array = simsEstimate.entries.map{case MatrixEntry(row :Long, col:Long, sims:Double) => Array(row, col, sims).mkString(",")}

 val coal = array.coalesce(1, true)
 array.saveAsTextFile("/user/similarity")

数据集包含3000行和10M列,它创建了601个拆分并花了46分钟来计算TreeAggregate,当尝试将结果保存到文件时,它会导致内存分配问题或线程溢出到磁盘问题。

有关如何修复它的任何指示?

0 个答案:

没有答案