PairRDDFunctions.aggregateByKey
скалярные состояния
Чтобы избежать выделения памяти, обеим функциям разрешено изменять и возвращать свой первый аргумент вместо создания нового U.
Важно воспользоваться этим, когда выделение памяти становится блокирующим.
Однако PairRDDFunctions.reduceByKey
scaladoc не содержит того же предложения.
Оба метода реализованы в терминах общего базового метода (combineByKeyWithClassTag
), поэтому возможность использования изменяемых структур также должна сохраняться.Но aggregateByKey
выполняет некоторую предварительную «очистку» предоставленной функции, которая может иметь или не иметь значение.(self.context.clean(seqOp)
).
Можно ли передать значение функции для seqOp
, которая изменяет свой первый параметр, на reduceByKey
?