Я изучаю Spark и начинаю понимать, как Spark распределяет данные и объединяет результаты.Я пришел к выводу, что использование операции map с последующим уменьшением имеет преимущество при использовании только операции агрегат .Это (по крайней мере, я так считаю), потому что агрегат использует последовательную операцию, которая вредит параллелизму, в то время как map и уменьшение могут извлечь выгоду из полного параллелизма.Итак, когда есть выбор, не лучше ли использовать карту и уменьшить, чем агрегировать?Есть ли случаи, когда совокупность предпочтительнее?Или, может быть, когда агрегат не может быть заменен комбинацией map и Reduce ?
Как пример - я хочу найти строкус максимальной длиной:
val z = sc.parallelize(List("123","12","345","4567"))
// instead of this aggregate ....
z.aggregate(0)((x, y) => math.max(x, y.length), (x, y) => math.max(x, y))
// .... shouldn't I rather use this map - reduce combination ?
z.map(_.length).reduce((x, y) => math.max(x, y))