【发布时间】:2016-12-23 12:10:22
【问题描述】:
我有很多数据,并且我已经尝试了基数 [20k, 200k+] 的分区。
我这样称呼它:
from pyspark.mllib.clustering import KMeans, KMeansModel
C0 = KMeans.train(first, 8192, initializationMode='random', maxIterations=10, seed=None)
C0 = KMeans.train(second, 8192, initializationMode='random', maxIterations=10, seed=None)
我看到initRandom() 调用了一次takeSample()。
然后takeSample() 实现似乎没有调用自己或类似的东西,所以我希望KMeans() 调用一次takeSample()。那么为什么监视器显示两个takeSample()s 每个KMeans()?
注意:我执行了更多的KMeans(),它们都调用了两个takeSample()s,无论数据是否为.cache()'d。
另外,分区的数量不影响takeSample()被调用的数量,恒定为2。
我正在使用 Spark 1.6.2(我无法升级)并且我的应用程序使用 Python,如果这很重要的话!
我把它带到了 Spark 开发者的邮件列表中,所以我正在更新:
第一个takeSample()的详细信息:
第二个takeSample()的详细信息:
可以看到执行了相同的代码。
【问题讨论】:
标签: scala apache-spark distributed-computing k-means bigdata