开发者社区> 问答> 正文

KeyBy如何映射到物理分区

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算子加逻辑使得累加操作正确。*来自志愿者整理的flink邮件归档

展开
收起
小阿怪 2021-12-07 10:48:45 731 0
1 条回答
写回答
取消 提交回答
  • 自定义分区可以的哈。

    你说123都加起来那个不够具体,我猜你是直接用DataStream的sum,自然是全局sum。

    分key的聚合必须是keyBy(...).sum(...)这样。

    但是,partitionCustom返回的是DataStream。而如果继续keyBy会覆盖partitioner。

    所以,你需要自己组装下transformation,也不难的。点进去看看源码怎么组装,抄一抄就可以。*来自志愿者整理的flink邮件归档

    2021-12-07 11:33:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载