当前位置: 首页 > 知识库问答 >
问题:

KafkaStreams:源主题的任务数和正则表达式

颜瀚漠
2023-03-14

假设我们有一个KafkaStreams应用程序,它正在从customerA的两个源主题读取数据。订单和客户B。命令。每个主题有3个分区。

StreamsBuilder builder = new StreamsBuilder();
KStream stream1 = builder.stream("customerA.orders")
KStream stream2 = builder.stream("customerB.orders")
//Business logic which has stateless transformations.

当我运行这个应用程序时,会创建6个任务(因为每个主题有3个分区):当前活动任务:[0_0,0_1,1_0,0_2,1_1,1_2]

由于两个主题名称都以". order"结尾,我可以使用regex从源主题读取数据,如下所示

StreamsBuilder builder = new StreamsBuilder();
KStream stream1 = builder.stream(Pattern.compile(".*orders"))

但当我使用正则表达式运行这个应用程序时,只创建了3个任务,而不是6个任务,尽管我们有两个主题,每个主题有3个分区:当前活动任务:[0_0,0_1,0_2]

streams应用程序正在从这两个主题获取消息

为什么当我们使用regex作为源主题时,任务数量会减少?

共有1个答案

解晟
2023-03-14
  1. 在第一个代码中,如果您不应用任何操作,比如join,或者在两个主题之间使用相同的状态存储(更准确地说,在两个kstream的太流DSL代码之间),它将创建两个子拓扑,这样您就可以为每个主题的分区创建单独的任务。所以这两个拓扑过程是并行的
  2. 当您的应用程序将多个主题订阅到一个KStream中时,它将为具有相同分区号的输入主题的主题分区创建一个相同的任务,因此它是共同分区的(因此主题1的分区0和主题2的分区0被同一个任务占用),一个特定的任务一次只处理来自一个订阅分区-i的一条消息
 类似资料:
  • 我有以下正则表达式在Java: 如果输入“a334234234”,验证将失败。但是,如果输入“a3423423fsfsdf”,验证将成功。。。 以下正则表达式也是如此,它检查输入是否仅为数字: 如果输入4SASD,验证将失败,但如果输入3dfsdf22,验证将成功。你能帮我做这个吗?

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 问题内容: 我的问题是:在GWT中使用正则表达式是否有很好的解决方案? 例如,我对String.split(regex)的使用不满意。GWT将代码转换为JS,然后将正则表达式用作JS正则表达式。但是我不能使用Java Matcher或Java Pattern之类的东西。但是我需要这些来进行组匹配。 有没有可能或图书馆? 我尝试了Jakarta Regexp,但是还有其他问题,因为GWT不能模拟该库

  • 问题内容: 我有一个脚本,可以分析电视剧集的文件名(例如show.name.s01e02.avi),获取剧集的名称(从www.thetvdb.com API),然后自动将其重命名为更好的名称(显示名-[01x02 ] .avi) 该脚本可以正常工作,直到您尝试在具有Unicode显示名称的文件上使用该脚本为止(我从未真正考虑过这一点,因为我拥有的所有文件都是英文的,所以大部分都属于) 如何允许正则

  • 我想做一个正则表达式来匹配这些字符串之一:、、、。 我的正则表达式只能接受以下字符串(而不是其他单词): 这是我当前的正则表达式,但它不能按预期工作: 编辑 如果在我的字符串中它们是: 如果它们是其他单词或符号,则返回 false。 谢谢大家。

  • 当前情况暂且可以满足: 但若: 头)被截断了。如何修改呢? 字符串的格式:\d+\.(我希望这里是任意字符,但也可以削减范围)+ * 然后重复。