Red de conocimiento informático - Problemas con los teléfonos móviles - Analice las diferencias y los escenarios de uso entre repartición y fusión en Spark

Analice las diferencias y los escenarios de uso entre repartición y fusión en Spark

repartición(numPartitions:Int):RDD[T] y coalesce(numPartitions:Int, shuffle:Boolean=false):RDD[T]

Ambos reparticionan las particiones de RDD. la repartición es solo una implementación simple de la interfaz coalesce, donde la reproducción aleatoria es verdadera (suponiendo que el RDD tiene N particiones y necesita ser repartido en M particiones)

1), N

2) Si N>M y N y M son similares (si N es 1000 y M es 100), varias N particiones se pueden fusionar en una nueva partición y finalmente fusionarse en M particiones. Shuff se puede establecer en falso. Cuando shuffl es falso, si la fusión no es válida cuando M>N, el proceso de mezcla no se realizará y existe una estrecha dependencia entre el RDD principal y el RDD secundario.

3) Si N>M y los dos son muy diferentes, entonces si la reproducción aleatoria se establece en falso, existe una estrecha relación de dependencia entre el RDD principal y el RDD secundario, y están en la misma etapa. , lo que puede causar chispa El programa carece de paralelismo, lo que afecta el rendimiento. Si M es 1, para que la operación antes de fusionarse sea mejor

En resumen, si la reproducción aleatoria se establece en falso, entonces entre el RDD principal. y el RDD secundario es una dependencia estrecha, están en la misma etapa, lo que puede hacer que el programa Spark carezca de paralelismo, lo que afecta el rendimiento. Si M es 1, para que las operaciones antes de fusionarse tengan un mejor rendimiento.

En resumen: si la reproducción aleatoria es falsa, la cantidad de particiones RDD seguirá siendo la misma si el parámetro de entrada es mayor que la cantidad existente de particiones, lo que significa que la cantidad de particiones RDD no se puede cambiar a más sin la reproducción aleatoria.