apache spark - significado - ¿Cómo se divide realmente el RDD Sparks RDD.randomSplit?
rdd significado (1)
Para cada rango definido por una matriz de weights
existe una transformación mapPartitionsWithIndex
separada que preserva la partición.
Cada partición se muestrea utilizando un conjunto de BernoulliCellSamplers
. Para cada división itera sobre los elementos de una partición dada y selecciona un elemento si el valor del siguiente Double
aleatorio está en un rango determinado definido por pesos normalizados. Todos los muestreadores para una partición dada usan la misma semilla RNG. Lo significa:
- no mezcla un RDD
- no toma bloques continuos más que por casualidad
- toma una muestra aleatoria de cada partición
- toma muestras no superpuestas
- requiere n-splits pasa sobre los datos
Así que supongo que he obtenido un rdd con 3000 filas. Las primeras 2000 filas son de clase 1 y las últimas 1000 filas son de clase2. El RDD está dividido en 100 particiones.
Al llamar a RDD.randomSplit(0.8,0.2)
¿La función también mezcla el rdd? Nuestro hace la división simplemente muestra 20% de forma continua del rdd? ¿O selecciona el 20% de las particiones al azar?
Lo ideal es que la división resultante tenga la misma distribución de clases que el RDD original. (es decir, 2: 1)
Gracias