Искра: совокупность против карты и уменьшение - PullRequest
0 голосов
/ 21 сентября 2018

Я изучаю 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))

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Агрегатная операция позволяет указать функцию объединителя (для уменьшения объема данных, передаваемых через случайное перемешивание), которая отличается от редуктора, при комбинации map-lower та же функция используется для объединения и уменьшения,Я знаю, что использовал старую терминологию Map Reduce, но концептуально все разделяемые фреймворки, основанные на ничем не перемешиваемом, делают это, и если вы заглянете в Google для поиска картредуктора, вы найдете множество объяснений этой концепции.

0 голосов
/ 21 сентября 2018

Полагаю, я могу частично ответить на свой вопрос.Я ошибочно полагал, что из-за использования последовательной операции агрегат может быть поврежден в параллелизме.Данные все еще могут быть распараллелены, и последовательная операция будет выполняться для каждого чанка.Это не менее эффективно, чем операция map .Итак, вопрос, который остается: зачем вам использовать агрегат , а не комбинацию map-redux ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...