【发布时间】:2017-01-25 19:27:13
【问题描述】:
我正在尝试在 Spark 中运行 FPGrowth 算法的示例,但是,我遇到了一个错误。这是我的代码:
import org.apache.spark.rdd.RDD
import org.apache.spark.mllib.fpm.{FPGrowth, FPGrowthModel}
val transactions: RDD[Array[String]] = sc.textFile("path/transations.txt").map(_.split(" ")).cache()
val fpg = new FPGrowth().setMinSupport(0.2).setNumPartitions(10)
val model = fpg.run(transactions)
model.freqItemsets.collect().foreach { itemset => println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq)}
代码一直运行到我得到错误的最后一行:
WARN TaskSetManager: Lost task 0.0 in stage 4.0 (TID 16, ip-10-0-0-###.us-west-1.compute.internal):
com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set
final scala.collection.mutable.ListBuffer field org.apache.spark.mllib.fpm.FPTree$Summary.nodes to scala.collection.mutable.ArrayBuffer
Serialization trace:
nodes (org.apache.spark.mllib.fpm.FPTree$Summary)
我什至尝试使用这里提出的解决方案: SPARK-7483
我也没有运气。 有没有人找到解决方案?或者有人知道查看结果或将结果保存到文本文件的方法吗?
任何帮助将不胜感激!
我还找到了该算法的完整源代码 - http://mail-archives.apache.org/mod_mbox/spark-commits/201502.mbox/%3C1cfe817dfdbf47e3bbb657ab343dcf82@git.apache.org%3E
【问题讨论】:
-
在我想出的最简单的示例数据集中运行时,我也会遇到错误。我得到某种类型转换错误。如果您在自己的方面取得了一些进展,请分享您的发现。谢谢
标签: algorithm scala apache-spark