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

处理结果:

相关推荐
Irene19919 小时前
Web前端开发转行大数据开发,可行性分析及学习路线
大数据·前端·转行
新缸中之脑9 小时前
Meta新模型Muse Spark上手体验
大数据·分布式·spark
JZC_xiaozhong9 小时前
2026年制造企业数据治理:破解多系统数据孤岛,实现“一数一源”
大数据·数据分析·制造·数据一致性·主数据管理·数据孤岛解决方案·数据集成与应用集成
咕噜签名-铁蛋9 小时前
大模型Token Plan详解:选型、优化与成本控制全攻略
大数据·运维·人工智能
互联网科技看点10 小时前
诸葛智能入选IDC最新报告:以营销智能体驱动金融增长
大数据·人工智能·金融
tian_jiangnan10 小时前
flink mysql集群增删改查
大数据·mysql·flink
xcbrand10 小时前
工业制造品牌全案公司找哪家
大数据·人工智能·python·制造
Guheyunyi10 小时前
无人机巡检系统,高效精准守护全场景安全
大数据·人工智能·科技·安全·架构·无人机
蓝耘智算10 小时前
Token经济学:读懂AI时代的“新石油”
大数据·人工智能·ai·token·蓝耘
上海达策TECHSONIC10 小时前
汽车零配件 SAP 转型数字化标杆 上海达策实施 SAP Business One 赋能汽车底盘转向领域
大数据·运维·人工智能·汽车·运维开发·制造