加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Spark的KMeans无法处理bigdata吗?

发布时间:2020-12-20 10:33:29 所属栏目:Python 来源:网络整理
导读:KMeans的 training有几个参数,初始化模式默认为kmeans ||.问题是它快速(少于10分钟)前进到前13个阶段,然后完全挂起,不会产生错误! 再现问题的最小示例(如果我使用1000点或随机初始化,它将成功): from pyspark.context import SparkContextfrom pyspark.mll
KMeans的 training有几个参数,初始化模式默认为kmeans ||.问题是它快速(少于10分钟)前进到前13个阶段,然后完全挂起,不会产生错误!

再现问题的最小示例(如果我使用1000点或随机初始化,它将成功):

from pyspark.context import SparkContext

from pyspark.mllib.clustering import KMeans
from pyspark.mllib.random import RandomRDDs


if __name__ == "__main__":
    sc = SparkContext(appName='kmeansMinimalExample')

    # same with 10000 points
    data = RandomRDDs.uniformVectorRDD(sc,10000000,64)
    C = KMeans.train(data,8192,maxIterations=10)    

    sc.stop()

这项工作什么都不做(它没有成功,失败或进展……),如下所示. “执行程序”选项卡中没有活动/失败的任务. Stdout和Stderr Logs没有特别有趣的东西:

enter image description here

如果我使用k = 81而不是8192,它将成功:

enter image description here

注意两个调用takeSample(),should not be an issue,因为在随机初始化的情况下调用了两次.

那么,发生了什么? Spark的Kmeans无法扩展吗?有人知道吗?你可以重现吗?

如果是内存问题,I would get warnings and errors,as I had been before.

注意:placeybordeaux的注释基于在客户端模式下执行作业,其中驱动程序的配置无效,导致退出代码143等(请参阅编辑历史记录),而不是群集模式,其中根本没有报告错误,应用程序只是挂起.

从零323:Why is Spark Mllib KMeans algorithm extremely slow?是相关的,但我认为他见证了一些进展,而我的挂起,我确实发表评论……

enter image description here

解决方法

我认为’悬挂’是因为你的遗嘱执行人不断死亡.正如我在旁边的会话中提到的,这个代码对我来说很好,本地和群集,Pyspark和Scala.但是,它需要更长的时间.几乎所有时间花在k-means ||上初始化.

我开了https://issues.apache.org/jira/browse/SPARK-17389跟踪两个主要的改进,其中一个你现在可以使用.编辑:真的,另见https://issues.apache.org/jira/browse/SPARK-11560

首先,有一些代码优化可以将init加速大约13%.

然而,大多数问题是它默认为k-means ||的5个步骤init,当看起来2几乎总是那么好.您可以将初始化步骤设置为2以查看加速,尤其是在现在挂起的阶段.

在我的笔记本电脑上的(较小的)测试中,初始时间从5:54到1:41进行了两次更改,主要是因为设置了初始化步骤.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读