开发者社区> 问答> 正文

Flink kafka - Flink作业不向不同分区发送消息

我有以下配置:

一个带有2个分区的kafka主题
一个zookeeper实例
一个kafka实例
两个具有相同组ID的消费者
Flink工作片段:

speStream.addSink(new FlinkKafkaProducer011(kafkaTopicName,new
SimpleStringSchema(), props));
场景1:

我在eclipse上写了一个flink作业(Producer),它正在从一个文件夹中读取一个文件并将msgs放在kafka主题上。

因此,当我使用eclipse运行此代码时,它工作正常。

例如:如果我放置一个包含100条记录的文件,flink会向分区1发送少量消息,少数消息发送到分区2,因此消费者都会获得少量消息。

场景2: 当我创建上述代码的jar并在flink服务器上运行它时,flink将所有msgs发送到一个分区,因此只有一个消费者获得所有的msgs。

我希望方案1使用方案2中创建的jar。

展开
收起
社区小助手 2018-12-11 16:03:24 3638 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    如果你没有提供FlinkKafkaPartitioner或没有明确说使用Kafka的FlinkFixedPartitioner那个将被使用,这意味着来自一个任务的所有事件将最终在同一个分区中。

    要使用Kafka的分区程序,请使用此ctor:

    speStream.addSink(new FlinkKafkaProducer011(kafkaTopicName,new SimpleStringSchema(), props), Optional.empty());
    从IDE和eclipse运行之间的区别可能是因为Flink中的并行或分区设置不同。

    2019-07-17 23:19:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载