java - 卡夫卡 : Bounded Batch Processing in Parallel

标签 java apache-kafka batch-processing spring-cloud-stream

我想使用 Kafka 执行有界批处理,程序将知道何时处理最后一条记录。

批处理:

  • 读取平面文件
  • 将每一行作为消息发送到 Kafka

卡夫卡监听器:

  • 使用来自 Kafka 的消息
  • 将记录插入数据库
  • 如果是最后一条记录,则在数据库中将批处理作业标记为已完成。

一种方法可能是使用单个 Kafka 分区,假设保证 FIFO(先进先出),并使批处理程序发送 isLastRecord 标志。

但是,这意味着处理将仅限于单线程(单个消费者)。

问题

有没有办法通过利用多个 Kafka 分区来实现并行处理?

最佳答案

如果您需要每个文件的有序保证,则只能使用单个分区。

如果您有多个文件,则可以为不同的文件使用不同的分区。

如果文件中的每一行都是数据库中的插入,我想知道您是否首先需要按顺序保证,或者是否可以按任何顺序插入所有记录/行?

一个更基本的问题是:为什么需要先将数据放入Kafka?为什么不直接读取文件并插入呢?

关于java - 卡夫卡 : Bounded Batch Processing in Parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224164/

相关文章:

mysql - Debezium - 自定义有效负载 - MySQL 连接器

windows - 当用户点击退出时执行批处理代码

java - Flink 每秒流式传输消息数

java - 寻找一种将数据添加到 Bean 验证异常的方法

java - eclipse 错误 crlf

hadoop - 云端大数据(Azure)

hadoop - 如何将Gobblin输出分成30分钟的分区?

batch-processing - 如何将我的 Rexx 程序作为批处理作业运行?

solr - 使用 Solr 索引文档的最佳策略

java - JFreeChart 散点图在系列之间移动数据