Spark :: KMeans ruft takeSample () zweimal auf?

Ich habe viele Daten und habe mit Partitionen der Kardinalität [20k, 200k +] experimentiert.

Ich nenne es so:

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)

und ich sehe, dassinitRandom () AnrufetakeSample() Einmal

Dann ist dietakeSample () Implementierung scheint sich nicht selbst oder so etwas zu nennen, also würde ich erwarten,KMeans() anrufentakeSample() Einmal. Warum zeigt der Monitor zweitakeSample()s perKMeans()?

Hinweis: Ich führe mehrKMeans() und sie alle rufen zweitakeSample()s, unabhängig davon, ob die Daten @ si.cache() würde oder nicht.

Außerdem hat die Anzahl der Partitionen keinen Einfluss auf die AnzahltakeSample() heißt, es ist konstant auf 2.

Ich verwende Spark 1.6.2 (und ich kann kein Upgrade durchführen) und meine Anwendung ist in Python, wenn das wichtig ist!

Ich habe dies zur Mailingliste der Spark-Entwickler hinzugefügt, daher aktualisiere ich:

Details von 1sttakeSample():

Details von 2ndtakeSample():

wobei man sieht, dass derselbe Code ausgeführt wird.