Flink keyBy算子的分区规则

demo代码

复制代码
String worlds = "flink,spark,hadoop,zk,kafka";

streamSource.flatMap(new RichFlatMapFunction<String, String>() {
            @Override
            public void flatMap(String value, Collector<String> collector) throws Exception {
                String[] worlds = value.split(",");
                for (String world : worlds) {
                    collector.collect(world);
                }
            }
        }).keyBy(new KeySelector<String, String>() {
            @Override
            public String getKey(String key) throws Exception {
                return key;
            }
        }).process(new KeyedProcessFunction<String, String, String>() {
            @Override
            public void processElement(String key,KeyedProcessFunction<String, String, String>.Context ctx,Collector<String> out) throws Exception {
                out.collect(key);
            }
        }).print("->");

        env.execute();

运行结果:

源码查看

我们进去keyBy算子,看看计算逻辑是怎样的:


根据调用逻辑,我们抽象出分区数据的计算逻辑:

复制代码
(MathUtils.murmurHash(key.hashCode()) % maxParallelism) * parallelism / maxParallelism ;

其中:

  • maxParallelism:默认128
  • parallelism:并行度数
  • key:分区键

验证

我们把抽出来的逻辑加到计算结果中查看

复制代码
process(new KeyedProcessFunction<String, String, String>() {
            @Override
            public void processElement(String key,
                                       KeyedProcessFunction<String, String, String>.Context ctx,
                                       Collector<String> out) throws Exception {
                String currentKey = ctx.getCurrentKey();
                int i = (MathUtils.murmurHash(key.hashCode()) % 128) * parallelism / 128 ;
                out.collect(key + "_" +i);
                out.collect(key);
            }

处理结果:

相关推荐
也非非也4 分钟前
iPhone 中国区 AI 落地:Apple 与阿里千问合作的技术观察
大数据·人工智能·ios·agent·iphone·智子
CC数分11 分钟前
统计学基础|先把问题问对:数据分析的六大类型
大数据·人工智能·算法
Elastic 中国社区官方博客13 分钟前
基于 Elasticsearch 与 Jina AI 的全模态智能搜索实践:技术全解析
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·jina
RPAdaren33 分钟前
财务机器人要怎么选?落地财务机器人时的常见问题有哪些?
大数据·人工智能·数据挖掘
众智鸿图38 分钟前
XR驱动管网数据智能体检!众智鸿图精彩亮相2026燃气运营与安全研讨会
大数据·安全·xr
字节跳动数据平台40 分钟前
火山引擎知识引擎 VeKnow|从企业本体到行动边界:Agent 能找到规则,为什么还是会判错?
大数据
财迅通Ai1 小时前
MLCC业务爆发式增长,带动昀冢科技三季度扭亏为盈
大数据·人工智能·科技·昀冢科技
PaperAccept1 小时前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算
跨境卫士—小依2 小时前
TikTokShop旧版物流模板组件停用跨境技术团队如何完成系统迁移
大数据·人工智能·新媒体运营·跨境电商·跨境·营销策略
阿俊-全栈开发2 小时前
LikeShop 多商户标准版智能商品分类与标签自动打标:大模型+向量检索二开实践
大数据·人工智能·分类·likeshop·likeshop开源商城