使用分区对 Kafka 数据进行分桶

Bucketizing Kafka Data with Partitions

我有一种情况是将数据加载到 Kafka 中。我想处理离散的 10m 桶中的记录。但请记住,记录时间戳来自生产者,因此它们的顺序可能不完全正确,所以我不能简单地使用标准的 Kafka 消费者方法,因为这会导致我的离散存储桶之外的记录。

是否可以为此使用分区?在将每条记录放入主题之前,我可以查看它的时间戳,然后将其用于 select 适当的分区。但是不知道Kafka是否支持adhoc命名分区

它们不是“命名”分区。当然,您可以定义一个包含 6 个分区(10 分钟“桶”,忽略小时和天)的主题和一个 Partitioner 子类,该子类使用简单的数学函数计算记录时间戳将进入哪个分区,但是,这是实际上只对订购有用,并没有解决您需要每 non-exact 10 分钟间隔从两个分区使用的问题。例如。第 11 分钟(分区 1)的记录需要使用第 1-9 分钟(分区 0)的记录。

总的来说,听起来您想要 sliding/hopping Kafka Streams 的窗口功能,而不是普通的 Consumer API。这无需编写具有任意数量分区的自定义 Producer Partitioner 即可工作。