当前位置: 首页 > news >正文

Flink kafka 数据汇不指定分区器导致的问题

背景

在flink中,我们经常使用kafka作为flink的数据汇,也就是目标数据的存储地,然而当我们使用FlinkKafkaProducer作为数据汇连接器时,我们需要注意一些注意事项,本文就来记录一下

使用kafka数据汇连接器

首先我们看一下常用的使用的情况:

    public FlinkKafkaProducer(
            String topicId,
            SerializationSchema<IN> serializationSchema,
            Properties producerConfig) {
        this(
                topicId,
                serializationSchema,
                producerConfig,
                //不指定分区器时,kafka默认使用FlinkFixedPartitioner分区器
                Optional.of(new FlinkFixedPartitioner<>()));
    }

可以看到在不指定分区器时,kafka默认使用FlinkFixedPartitioner作为分区器,我们查看一下FlinkFixedPartitioner的分区逻辑:

    public int partition(T record, byte[] key, byte[] value, String targetTopic, int[] partitions) {
        Preconditions.checkArgument(
                partitions != null && partitions.length > 0,
                "Partitions of the target topic is empty.");
		// 根据算子的任务索引号进行求余
        return partitions[parallelInstanceId % partitions.length];
    }

可以看到,同一个算子任务的记录都只会发送到同一个kafka分区上,当分区数大于算子任务数时,可以确定的是有一些分区是没有记录的,那你可能会问,有些分区没有记录有什么问题?

相关文章:

  • go语言输出带颜色字体
  • docker 入门教程
  • 单页面应用(SPA):改变用户体验的未来
  • Infuse Mac视频播放器 中文
  • 软件测试学习(二)静态白盒测试、动态白盒测试、配置测试、兼容性测试、外国语言测试
  • 信息学奥赛一本通-编程启蒙3219:练36.2 不定方程求解
  • 让 Visual Studio 用上 ChatGPT
  • Hadoop3教程(九):MapReduce框架原理概述
  • Web自动化测试入门 : 前端页面的组成分析详解
  • 《机器学习》第5章 神经网络
  • python selenium下载一个合适的chromedriver.exe(稳定版本)
  • 【数据结构】:二叉树与堆排序的实现
  • acwing算法基础之基础算法--整数离散化算法
  • vue打包压缩
  • Go语言入门心法(三): 接口
  • 端到端的机器学习项目(Machine Learning 研习之六)
  • 深入了解 JavaScript 中的构造函数和对象创建
  • 最新ai创作系统CHATGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)
  • 海康威视、大华、宇视rtsp实时读取网络摄像头
  • c++string类的赋值问题
  • 陕西永寿4岁女童被蜜蜂蜇伤致死,当地镇政府介入处理
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 上海质子重离子医院二期项目启动,有望成为全世界最大粒子治疗中心
  • 高进华“控股”后首份年报出炉,史丹利账上可动资金大幅缩水
  • 中国难以承受高关税压力?外交部:任何外部冲击都改变不了中国经济基本面
  • 夜读丨最美的风景,在亲人的目光里