【发布时间】:2019-02-23 13:46:36
【问题描述】:
我在KMeans.train() 中遇到了一个异常,如下所示:
java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:212)
at org.apache.spark.mllib.util.MLUtils$.fastSquaredDistance(MLUtils.scala:487)
at org.apache.spark.mllib.clustering.KMeans$.fastSquaredDistance(KMeans.scala:589)
at org.apache.spark.mllib.clustering.KMeans$$anonfun$runAlgorithm$3.apply(KMeans.scala:304)
at org.apache.spark.mllib.clustering.KMeans$$anonfun$runAlgorithm$3.apply(KMeans.scala:301)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
at scala.collection.mutable.HashMap.foreach(HashMap.scala:99)
at org.apache.spark.mllib.clustering.KMeans.runAlgorithm(KMeans.scala:301)
at org.apache.spark.mllib.clustering.KMeans.run(KMeans.scala:227)
at org.apache.spark.mllib.clustering.KMeans.run(KMeans.scala:209)
at org.apache.spark.mllib.clustering.KMeans$.train(KMeans.scala:530)
这并没有给我任何关于从哪里开始调试的线索。
我找到了一个旧的post,但这个问题出现在KMeans.predict(),而这发生在训练阶段本身。
【问题讨论】:
-
你的输入和代码是什么?
-
我正在考虑关闭这个问题作为你所链接的人的欺骗,但我不太确定。考虑到这些guidelines,您是否介意查看您的问题?
-
@eliasah: 很可能是重复的 - 从Spark ML Github 来看,
fastSquaredDistance的两个要求是 1) 向量的大小相同,2) 两个规范都是正数。 -
谢谢@AlexandreDupriez!我怀疑这一点,但我给了 OP 一个机会,以防它不是一个完全的骗局,所以我不会单枪匹马地关闭它,在尖叫开始之后:)
-
@eliasah 我使用 limit() 和 except() 对数据集的行进行了二进制搜索,并缩小到导致此崩溃的确切特征向量。我发现其中一个向量在一列中有“NaN”,这一定是它导致崩溃的原因。感谢所有帮助并为我指明正确的方向。
标签: apache-spark apache-spark-mllib