Apache Spark Streaming K-means:我需要知道在同一数据中运行了多少次迭代?

Apache Spark Streaming K-means: I need know how many iterations runs in the same data?

我是 Spark 的新手。我正在尝试阅读代码并了解 K-means in Spark Streaming 的工作原理。我不知道如何获得算法在同一数据组中执行的迭代次数。我找不到包含此信息的 Java 文件。

你能帮帮我吗?

谢谢

解决方案:在这个文件/spark-1.5.0/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala中有一个while语句在run使用名为 iteration 的变量的方法,Spark 将它写入每个 运行 的日志中。

当您初始化 KMeans class 时,您可以指定最大迭代参数。

新 KMeans().setMaxIterations(迭代次数)

然后它将为每个预测使用该参数

作为对 majitux 解决方案的一个小补充(我还不能发表评论)。如果您想知道 K-Means 的迭代次数,只需将 SPARK 的日志级别更改为 INFO。在 shell 内使用:

spark.sparkContext.setLogLevel("INFO")

或者通过在 conf/log4j.properties.

中将其设置为默认值

K-Means 完成后 运行 字符串 "KMeans++ converged in X iterations" 将出现在日志中。