Hi,
Both implementations work so no one bothered to change the older 
implementations yet. I don’t think it’s a problem but if you want you can adapt 
reduce/fold to the newer implementation.

Best,
Aljoscha
> On 26. Apr 2017, at 14:51, 魏偉哲 <tony19920...@gmail.com> wrote:
> 
> Hi Aljoscha,
> 
> I know the aggregate code is newer. I am confused because the
> implementations are not consistent.
> Does it mean that the reduce/fold implementation would need to be
> refactored for the purpose of having less layers ?
> Or is it better to remain the current implementations for some reasons?
> 
> Many thanks,
> Tony Wei
> 
> 2017-04-26 20:24 GMT+08:00 Aljoscha Krettek <aljos...@apache.org>:
> 
>> Hi Tony,
>> The reason for this is that the aggregate code is newer. The new code has
>> less layers, compared to the reduce/fold implementation where it is
>> InternalFunction(ReduceApplyFunction(Reduce)) instead of
>> InteralAggregateFunction(Aggregate).
>> 
>> Best,
>> Aljoscha
>>> On 26. Apr 2017, at 06:39, 魏偉哲 <tony19920...@gmail.com> wrote:
>>> 
>>> Hi all,
>>> 
>>> Recently, I was tracing the source code in streaming api and I was
>> confused
>>> about some implementations.
>>> 
>>> When using reduce function with evictor, the *WindowStream* will wrap the
>>> *ReduceFunction* and *ProcessWindowFunction* into
>>> *ReduceApplyProcessWindonwFunction* and put it in
>>> *InternalIterableProcessWindowFunction*. So does fold function.
>>> 
>>> However, when using aggregate, the *InternalIterableProcessWindowF
>> unction*
>>> was changed to *InternalAggregateProcessWindowFunction* which was
>> applied
>>> aggregation in the process() method.
>>> 
>>> My question is why not implement an *AggregateApplyProcessWindowFun
>> ction*
>>> and use *InternalIterableProcessWindowFunction* instead just like
>> reduce,
>>> fold function did. Is there any concern?
>>> 
>>> Many thanks,
>>> Tony Wei
>> 
>> 

Reply via email to