自定义分区可以的哈。 你说123都加起来那个不够具体,我猜你是直接用DataStream的sum,自然是全局sum。 分key的聚合必须是keyBy(...).sum(...)这样。
但是,partitionCustom返回的是DataStream。而如果继续keyBy会覆盖partitioner。 所以,你需要自己组装下transformation,也不难的。点进去看看源码怎么组装,抄一抄就可以。 zxyoung <[email protected]> 于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算子加逻辑使得累加操作正确。
