Spark :: KMeans llama a takeSample () dos veces?
Tengo muchos datos y he experimentado con particiones de cardinalidad [20k, 200k +].
Yo lo llamo así:
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)
y veo queinitRandom () llamadastakeSample()
una vez.
Entonces latakeSample () la implementación no parece llamarse a sí misma o algo así, así que esperaríaKMeans()
llamartakeSample()
una vez. Entonces, ¿por qué el monitor muestra dostakeSample()
s perKMeans()
?
Nota: ejecuto másKMeans()
y todos invocan dostakeSample()
s, independientemente de los datos que se estén.cache()
o no.
Además, el número de particiones no afecta el númerotakeSample()
se llama, es constante a 2.
Estoy usando Spark 1.6.2 (y no puedo actualizar) y mi aplicación está en Python, si eso importa.
Lo traje a la lista de correo de los desarrolladores de Spark, así que estoy actualizando:
Detalles de 1ertakeSample()
:
Detalles de 2dotakeSample()
:
donde se puede ver que se ejecuta el mismo código.