У меня много данных, и я экспериментировал с разделами мощности [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() за KMeans()?
Примечание. Я выполняю больше KMeans(), и все они вызывают два takeSample() s, независимо от данных .cache() 'd или нет.
Кроме того, число разделов не влияет на число takeSample(), оно равно 2.
Я использую Spark 1.6.2 (и я не могу обновить), и мое приложение находится на Python, если это имеет значение!
Я привел это в список рассылки разработчиков Spark, поэтому я обновляю:
Детали 1-го takeSample():
Детали 2-го takeSample():
где видно, что выполняется тот же код.


