You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 赵一旦 <hi...@gmail.com> on 2020/11/16 06:40:55 UTC

Reduce等函数的对下reuse问题

如题,想知道reduce函数实现的时候,什么情况复用对下可能导致问题呢?or永远不可能导致问题呢?


比如计算图中存在很多重复计算:

streamA.reduce(reduceFunction1,....);

streamA.reduce(reduceFunction2,....);

streamA.xxxx

Re: Reduce等函数的对下reuse问题

Posted by 赵一旦 <hi...@gmail.com>.
这个问题有人讨论下嘛?

赵一旦 <hi...@gmail.com> 于2020年11月16日周一 下午2:48写道:

> 再具体点,reduce中return的对象作为reduce之后输出(这里是否涉及立即序列化)。
>
> reduce(new ReduceFunction<ObjCls>{
>
>   @Override
>   public ObjCls reduce( ObjCls ele1, ObjCls ele2 ){
>     long resultPv = ele1.getPv() + ele2.getPv();
>
>     ele1.setPv(999);   //  此处如果加这么一句setPv,会影响到什么算子呢?(各种可能DAG情况下)
>
>     ele1.setPv( resultPv );
>     return ele1;
>   }
>
> })
>
> 赵一旦 <hi...@gmail.com> 于2020年11月16日周一 下午2:40写道:
>
>> 如题,想知道reduce函数实现的时候,什么情况复用对下可能导致问题呢?or永远不可能导致问题呢?
>>
>>
>> 比如计算图中存在很多重复计算:
>>
>> streamA.reduce(reduceFunction1,....);
>>
>> streamA.reduce(reduceFunction2,....);
>>
>> streamA.xxxx
>>
>

Re: Reduce等函数的对下reuse问题

Posted by 赵一旦 <hi...@gmail.com>.
再具体点,reduce中return的对象作为reduce之后输出(这里是否涉及立即序列化)。

reduce(new ReduceFunction<ObjCls>{

  @Override
  public ObjCls reduce( ObjCls ele1, ObjCls ele2 ){
    long resultPv = ele1.getPv() + ele2.getPv();

    ele1.setPv(999);   //  此处如果加这么一句setPv,会影响到什么算子呢?(各种可能DAG情况下)

    ele1.setPv( resultPv );
    return ele1;
  }

})

赵一旦 <hi...@gmail.com> 于2020年11月16日周一 下午2:40写道:

> 如题,想知道reduce函数实现的时候,什么情况复用对下可能导致问题呢?or永远不可能导致问题呢?
>
>
> 比如计算图中存在很多重复计算:
>
> streamA.reduce(reduceFunction1,....);
>
> streamA.reduce(reduceFunction2,....);
>
> streamA.xxxx
>