据我所知,在阅读了kafka streams文档之后,不可能只从给定主题的一个分区使用它来流式传输数据,人们总是必须完整地阅读它。对吗?如果是的话,将来有没有计划为api提供这样一个选项?
pgky5nke1#
您可以使用partitiongrouper做一些类似于您需要的事情。分区分组器可用于基于给定的主题分区创建流任务。例如,请参阅defaultpartitiongrouper实现。但这需要定制。因此,正如@ppatierno所建议的,请查看您的用例,然后以一种不必偏离标准实践的方式设计拓扑。
izj3ouym2#
不,您不能这样做,因为内部使用者订阅了加入使用者组的主题,该使用者组是通过应用程序id指定的,因此分区是自动分配的。顺便问一下,你为什么要那样做?如果不重新平衡,您将失去kafka stream提供的可伸缩性功能,因为只要添加/删除流应用程序的示例,您就可以伸缩整个流程,这要归功于分区上的重新平衡。
dw1jzc5e3#
无法在kafka使用者中指定分区,因为这就是kafka缩放的原因。或者我们可以这样说,只有分布式系统才能工作。您可以进行分段并将每个分段分配给一个主题,每个主题应该只有一个分区。由于主题是在zookeeper中注册的,如果尝试添加太多主题,可能会遇到问题,例如,您有一百万个用户,并且决定为每个用户创建一个主题。
e3bfsja24#
您可以通过正确指定主题、分区号和偏移量来实现这一点
Map(new TopicPartition(topic, partition) -> 2L) val stream = KafkaUtils.createDirectStream[String, String]( ssc, PreferConsistent, Subscribe[String, String](topics, kafkaParams,offsets))
其中partition是指分区号,2l为隔板起始偏移量有关详细信息,请参阅来自特定部分的流媒体。
4条答案
按热度按时间pgky5nke1#
您可以使用partitiongrouper做一些类似于您需要的事情。分区分组器可用于基于给定的主题分区创建流任务。
例如,请参阅defaultpartitiongrouper实现。但这需要定制。
因此,正如@ppatierno所建议的,请查看您的用例,然后以一种不必偏离标准实践的方式设计拓扑。
izj3ouym2#
不,您不能这样做,因为内部使用者订阅了加入使用者组的主题,该使用者组是通过应用程序id指定的,因此分区是自动分配的。顺便问一下,你为什么要那样做?如果不重新平衡,您将失去kafka stream提供的可伸缩性功能,因为只要添加/删除流应用程序的示例,您就可以伸缩整个流程,这要归功于分区上的重新平衡。
dw1jzc5e3#
无法在kafka使用者中指定分区,因为这就是kafka缩放的原因。或者我们可以这样说,只有分布式系统才能工作。您可以进行分段并将每个分段分配给一个主题,每个主题应该只有一个分区。
由于主题是在zookeeper中注册的,如果尝试添加太多主题,可能会遇到问题,例如,您有一百万个用户,并且决定为每个用户创建一个主题。
e3bfsja24#
您可以通过正确指定主题、分区号和偏移量来实现这一点
其中partition是指分区号,
2l为隔板起始偏移量
有关详细信息,请参阅来自特定部分的流媒体。