2015-04-29 6 views
2

В большом задании обработки данных функция «fold» имеет более низкую вычислительную производительность по сравнению с функцией «уменьшить»?Spark Fold vs Уменьшить производительность?

Например, у меня есть следующие две функции:

array1.indices.zip(array1).map(x => x._1 * x._2).reduce(_ + _) 

    array1.indices.zip(array1).map(x => x._1 * x._2).fold(0.0) {_ + _} 

array1 очень огромный массив рдд. эта функция имеет более высокую вычислительную производительность, дающую ту же настройку кластеризации.

+0

См. [Это] (http://stackoverflow.com/a/7764875/42188) ответ. Не было бы никакой разницы в производительности. – muhuk

+0

Возможный дубликат [различие между foldLeft и reduceLeft в Scala] (http://stackoverflow.com/questions/7764197/difference-between-foldleft-and-reduceleft-in-scala) – muhuk

+3

Это не дубликат. Этот вопрос связан с операциями с пакетами Spark RDD, а не Scala. – Wildfire

ответ

1

Это действительно same as the one pointed out by muhuk в кишках реализации Спарк просто призыв к iterator

fold из источника:

(iter: Iterator[T]) => iter.fold(zeroValue)(cleanOp) 

reduce из источника:

iter => 
    if (iter.hasNext)Some(iter.reduceLeft(cleanF)) 
    else None 

Так , это в первую очередь просто призыв к реализациям scala.

Смежные вопросы