【发布时间】:2018-02-28 04:29:50
【问题描述】:
当我使用 Spark-mllib FP-growth 算法挖掘频繁项集时,我遇到了这些错误。
java.lang.OutOfMemoryError:Java 堆空间 在 java.util.IdentityHashMap.resize(IdentityHashMap.java:469) 在 java.util.IdentityHashMap.put(IdentityHashMap.java:445) 在 org.apache.spark.util.SizeEstimator$SearchState.enqueue(SizeEstimator.scala:132) 在 org.apache.spark.util.SizeEstimator$$anonfun$visitSingleObject$1.apply(SizeEstimator.scala:178) 在 org.apache.spark.util.SizeEstimator$$anonfun$visitSingleObject$1.apply(SizeEstimator.scala:177) 在 scala.collection.immutable.List.foreach(List.scala:381).....
但是,我的数据集大小只有 1000M,freqitems 的数量只有 300,我不知道为什么它会给我一个 OOM 错误。 重新分区也无济于事。
顺便说一句,executor.memory是20G,driver.memory是20G。
部分代码:
val fileInput = args(0)
val fileOutput = args(1)
val fileTemp = args(2)
val sc = new SparkContext(new SparkConf().setAppName("Association Rules"))
val originData = sc.textFile(fileInput + "/D.dat",48)
val transactions: RDD[Array[String]] = originData.map(s => s.trim.split(' '))
val model = new FPGrowth().setMinSupport(0.092).setNumPartitions(48).run(transactions)
val freqItems = model.freqItemsets.persist()
val AAnswer = freqItems.sortBy(x => x.items.toString)
AAnswer.saveAsTextFile(fileOutput + "/D.dat")
【问题讨论】:
标签: scala apache-spark