Разъяснение агрегатной функции искры - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в Скале и Спарк. Я не мог понять агрегатную функцию. Мне дан следующий код, но я не понимаю выходное значение.

    val z = sc.parallelize(List("12","23","345","4567"),2)

    z.aggregate("")((x,y) => math.min(x.length, y.length).toString, (x,y) => x + y)

    res5: String = 11

Есть 2 раздела. Начальное значение "". Как применяется значение (x, y), я не слишком уверен. Но я понимаю, что для первого раздела он будет итеративно принимать их за ("", "12") ("12", "23"), а минимальное значение, возвращаемое для первого раздела, равно 0. Аналогично для 2-гоpartition (x, y) итеративно оценивает функцию min из ("", "345") ("345", "4567"), а значение min, возвращаемое для второго раздела, равно 0.

Функция редуктораоттуда берет на себя агрегацию результатов "" + "0" + "0" - конечный результат должен быть "00", но фактический результат - "11"

что мне не хватает, может кто-нибудь объяснить, какАгрегатная функция работает для приведенного выше кода. Особенно я не понимаю концепцию (x, y).

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете увидеть, что происходит, добавив некоторые записи:

z.aggregate("")((x,y) => {
  val res = math.min(x.length, y.length).toString
  println(s"math.min($x.length, $y.length).toString => $res")
  res
}, (x,y) => {
  println(s"$x + $y => ${x+y}")
  x + y
})

, что дает:

math.min(.length, 345.length).toString => 0
math.min(.length, 12.length).toString => 0
math.min(0.length, 4567.length).toString => 1
math.min(0.length, 23.length).toString => 1
 + 1 => 1
1 + 1 => 11

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

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