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);
            }

处理结果:

相关推荐
逸Y 仙X19 小时前
Elasticsearch时间类型实战
java·大数据·elasticsearch·搜索引擎·全文检索
Dxy123931021621 小时前
Python如何处理树状分类数据
大数据·python·分类
凡人AI录1 天前
小红书商业变现 100 个关键词:从流量逻辑到长期复利
大数据
zhongerzixunshi1 天前
筑牢国家安全防线,赋能企业合规发展
大数据·人工智能·安全
小飞象—木兮1 天前
2026数据资产入表解决方案(52页 PPT)
大数据·人工智能
Dotrust东信创智1 天前
革新测试管理3.0:Storm UTP统一测试管理平台全链路追溯与AI赋能升级
大数据·人工智能·storm
烟台业荣数据科技有限公司1 天前
智能建造知识拓展 | AR技术:虚实融合,赋能施工现场
大数据·人工智能·机器人
treesforest1 天前
IP地理位置精准查询:从城市级到街道级的定位技术深度解析
大数据·网络·网络协议·tcp/ip·安全·网络安全·ip
小小王app小程序开发1 天前
场馆预约小程序开发分析:线下实体转型利器,冠品科技助力商家高效增收
大数据·科技
lyc87801 天前
【Qwen3.5-2B-Base】本地模型部署和验证联动千帆api
大数据·python