У меня много данных, и я экспериментировал с разделами мощности [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()
:
где видно, что выполняется тот же код.