2016-12-10 1 views
0

В примере SparkPi, который поставляется с дистрибутивом Spark, есть reduce на RDD, выполняемый параллельно (каждый срез вычисляет его общее количество) или нет?Spark SparkPi пример

val count: Int = spark.sparkContext.parallelize(1 until n, slices).map { i => 
    val x = random * 2 - 1 
    val y = random * 2 - 1 
    if (x*x + y*y < 1) 1 else 0 
}.reduce(_ + _) 

ответ

2

Да, это так.

По умолчанию этот пример будет работать на 2 срезах. В результате ваша коллекция будет разделена на 2 части. Затем Spark выполнит преобразование map и действие reduce на каждый раздел параллельно. Наконец, Spark объединит отдельные результаты в конечное значение.

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

+0

Прохладный! Поэтому не нужно быть «умным» и отправлять закрытие для вычисления под-итогов для каждого исполнителя вместо использования '' 'reduce'''. Мне это нравится, просто нужно доверять Спарку :-) – Frank

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