Hello,

The result contains (a,Map(3 -> rt)) because reduce prints all
intermediate results (sometimes called a "rolling reduce"). It's
designed this way, because Flink streams are generally infinite, so
there is no last element where you could print the "final" results.
However, you can use windowing [1] to perform the reduce on elements
that arrived in certain time intervals called windows, in which case
only the final results for a window are emitted.

Best,
Gábor

[1] 
https://ci.apache.org/projects/flink/flink-docs-release-1.1/apis/streaming/windows.html



2016-08-29 11:08 GMT+02:00  <rimin...@sina.cn>:
> Hi,
>       in flink,the datastream have reduce Transformations,but the result do
> not satisfy for me,
>     for example,
>     val pairs2 = env.fromCollection((Array(("a", Map(3->"rt")),("a",
> Map(4->"yt")),("b", Map(5->"dfs")))))
>     val re= pairs2.keyBy(0).reduce((x1,x2)=>(x1._1,x2._2++x1._2))
>     re.map{x=>
>          println(x)
>           x
>     }
>
>    the result are,
>      (a,Map(3 -> rt))
>      (a,Map(3 -> rt, 4 -> yt))
>      (b,Map(5 -> dfs))
>
>    but i want to get ,
>      (a,Map(3 -> rt, 4 -> yt))
>      (b,Map(5 -> dfs))
>
> --------------------------------
>
>

Reply via email to