Что означает «коммутативный и ассоциативный» в терминах Apache Beam и параллельной обработки в целом? - PullRequest
0 голосов
/ 11 марта 2019

Из документации

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

1 Ответ

4 голосов
/ 11 марта 2019

Значение ассоциативных и коммутативных точно такое же, как в математике.

Оператор "+" называется коммутативным, если a + b =b + a
Оператор "+" называется ассоциативным, если (a + b) + c = a + (b + c)

Для "комбинированного преобразования", описанного в документации, вы пытаетесьреализовать накопление.

s = a + b + c + d

, где "+" - любой оператор.

Ассоциативность является абсолютным требованием для возможности распараллеливаниятакая операция.Если «+» не является ассоциативным

  1. a+b+c+d имеет значение no , как ((a+b)+c)+d != (a+(b+c))+d.Чтобы придать выражению, не заключенному в скобки, значение, результат не должен зависеть от группировки операций.

  2. Нельзя изменить скобки, чтобы изменить порядок операций для их параллельного выполнения
    (((a+b) + c) + d) isпо существу последовательный: вычисление a + b, затем добавление c, затем добавление d
    ((a+b) + (c+d)) позволяет вычислять (a+b) и (c+d) параллельно.

Коммутативность менее частотребуется в качестве ограничения для распараллеливания, но позволяет переставлять порядок операндов.

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