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

Apache Flink:使用filter()或split()拆分流?

秦景福
2023-03-14

我有一个来自Kafka数据流,它对MyModel中的一个字段有2个可能的值。MyModel是一个pojo,具有从Kafka的消息解析的特定于领域的字段。

DataStream<MyModel> stream = env.addSource(myKafkaConsumer);
stream
        .filter(<MyModel.a == a1>)
        .keyBy()
        .window()
        .apply()
        .addSink()

stream
        .filter(<MyModel.a == a2>)
        .keyBy()
        .window()
        .apply()
        .addSink()
SplitStream<MyModel> split = stream.split(…)
    split
        .select(<MyModel.a == a1>)
        …
        .addSink()

    split
        .select<MyModel.a == a2>()
        …
        .addSink()

共有1个答案

刘昌翰
2023-03-14

这两种方法的行为基本相同。在内部,split()运算符派生流并应用筛选器。

还有第三种选择,侧输出。边输出可能有一些好处,例如不同的输出数据类型。此外,对于侧输出,滤波器条件只评估一次。

 类似资料:
  • 上一章我们通过 multiline 插件将多行数据合并进一个事件里,那么反过来,也可以把一行数据,拆分成多个事件。这就是 split 插件。 配置示例 filter { split { field => "message" terminator => "#" } } 运行结果 这个测试中,我们在 intputs/stdin 的终端中输入一行数据:"

  • 上一章我们通过 multiline 插件将多行数据合并进一个事件里,那么反过来,也可以把一行数据,拆分成多个事件。这就是 split 插件。 配置示例 filter { split { field => "message" terminator => "#" } } 运行结果 这个测试中,我们在 intputs/stdin 的终端中输入一行数据:”t

  • 我想在每个字母上使用String.prototype.split(/[a-zA-Z]/)拆分以下字符串: 结果: 但我想收到这个:

  • 问题内容: 如何使用分隔符分割字符串? 如果我做 我得到一个错误 线程“主”中的异常java.util.regex.PatternSyntaxException:索引1附近的未封闭字符类[ 有什么帮助吗? 问题答案: 该是在正则表达式中的保留字符,你需要逃避它,

  • 问题内容: 我需要分解一个始终如下所示的字符串: 东西-something_else。 我需要在另一个输入字段中输入“ something_else”。当前,此字符串示例正被即时添加到HTML表行中,如下所示: 我认为“拆分”是可行的方法,但是几乎找不到文档。 问题答案: 可以在MDN找到文档。请注意,是不是 一个jQuery方法,但本地字符串的方法。 如果在字符串上使用,则返回带有子字符串的数组

  • 问题内容: 我找到了一个出色的RegEx来提取camelCase或TitleCase表达的一部分。 它按预期工作: value -> value camelValue -> camel / Value TitleValue -> Title / Value 例如,使用Java: 我的问题是在某些情况下它不起作用: 情况1:VALUE-> V / A / L / U / E 情况2:eclipseR