自定义分区可以的哈。
你说123都加起来那个不够具体,我猜你是直接用DataStream的sum,自然是全局sum。
分key的聚合必须是keyBy(...).sum(...)这样。
但是,partitionCustom返回的是DataStream。而如果继续keyBy会覆盖partitioner。
所以,你需要自己组装下transformation,也不难的。点进去看看源码怎么组装,抄一抄就可以。
zxyoung <
[hidden email]> 于2020年11月6日周五 下午4:47写道:
> Hi,请教下各位:
> 我的场景是现在有个Keyby操作,但是我需要指定某一个key落地在某一个具体物理分区中。
>
> 我注意到keyby中得KeySelector仅仅是逻辑的分区,其实还是通过hash的方式来物理分区,没有办法指定哪一个key到哪一个分区去做。
>
> 我尝试使用partitionCustom中带有partitioner和keySelector的参数函数,但是发现没有办法直接使用类似Sum一类的聚合函数,实际测试发现Sum会将同一物理分区、但是不同Key的值都累加起来。
>
> 例如Tuple2<id,time>,id=1/2/3的给分区0,id=4的给分区1,直接使用sum的话,会将id=1/2/3的time都累加起来。
> 有什么方法能让keyby方法也能够物理分区吗?还是只能在partitionCustom后给map算子加逻辑使得累加操作正确。