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

在Flink中用(X)键控的慢变流丰富(X,Y)键控的快速流

杜思远
2023-03-14

我需要用(userId)键控的缓慢变化的streama来丰富由(userId,startTripTimestamp)键控的快速变化的streama

我使用带有数据流API的Flink1.8。我考虑两种方法:

>

  • 广播streamb并通过用户ID和最新时间戳连接流。它是否等同于TableAPI中的DynamicTable?我可以看到这种解决方案的一些缺点:streamB需要放入每个工作节点的RAM中,这会增加RAM的利用率,因为streamB需要存储在每个工作节点的RAM中。

    我也看到过这个建议https://cwiki.apache.org/confluence/display/flink/flip-17+side+inputs+for+datastream+api,里面说:

    一般而言,这些数据大多遵循这样的模式:将高吞吐量的主流与一个或多个缓慢变化或静态数据的输入连接起来:

    [...]

  • 共有1个答案

    督翰学
    2023-03-14

    在Gaurav Kumar已经回答的基础上。

    主要的问题是,您是否需要精确匹配StreamaStreamb中的记录,还是最大努力匹配?例如,这是一个问题,对你来说,因为一个种族条件一些(很多?)streama中的记录可以在streamb中的某些更新到达之前处理,例如在启动期间?

    我建议从表API如何解决这个问题中获得启发。可能时态表联接对您来说是正确的选择,这将留给您一个选择:处理时间还是事件时间?

    Gaurav Kumar的这两个建议都是处理时间时态表连接的实现,它假设记录可以非常松散地连接,并且不必正确地计时。

    如果streamastreamb中的记录必须正确定时,那么您必须以某种方式缓冲这两个流中的一些记录。有各种各样的方法如何做,这取决于你想要实现的语义。在确定了这一点之后,实际的实现就不那么困难了,您可以从表API联接操作符(flink-table-planner模块中的org.apache.flink.Table.runtime.join包)中获得灵感。

    边输入(您引用的)和/或输入选择只是控制不必要的缓冲记录数量的工具。您可以在没有它们的情况下实现有效的Flink作业,但是如果一个流显著超过另一个流(就事件时间而言--对于处理时间而言,这不是问题),那么内存消耗就很难控制了。

     类似资料:
    • 问题内容: 我试图在Flink中的KeyedStream上执行映射操作: JsonToObjectMapper运算符的输出是 MessageObject 类的POJO,它具有String字段“ keyfield ”。然后,将流键入此字段。 MessageProcessorStateful是一个RichMapFunction,如下所示: 该代码引发NullPointer异常: 尽管我已经验证了’ke

    • 我有一个记录按顺序到达的流。我应用了一个map函数,然后在上面应用了keyBy函数。在每个具有相同键的记录流中,记录的顺序是否会保持? 在按顺序排列记录方面也存在类似的问题。但是我对这里给出的答案和下面从链接“https://ci.apache.org/projects/flink/flink-docs-release-1.2/concepts/programming-model.html”中复制

    • 我对闪身是个新手。我正在尝试在我的应用程序中启用检查点和状态。我从Flink文档中看到了我们是如何存储键控状态的。但是我想知道我们是否可以存储非键控状态(的状态)

    • 问题内容: 我正在尝试从的JSON输出解析环境变量。令人讨厌的是,这些环境变量没有作为有用的键值对返回。它们只是x = y字符串的数组。这是输出的相关代码段: 我想将该数组转换为这样的东西: 这样,我可以使用一条命令来获取我关心的值。我不知道如何做到这一点。 选择数据甚至将键和值拆分为单独的元素相对容易。例如,如果使用,我将获得如下数据: 但是,我不知道如何将数据转换为对象分配。似乎应该是或的某种

    • 我想在Mac OS X 10.8 Mountain Lion中禁用键盘快捷键命令-W和命令-Q。 这是因为它们会干扰我从xQuartz运行的终端内部运行的emacs命令。如何禁用键盘快捷键?

    • 本文向大家介绍请快速答出此题的答案并解释:var x, y = 1; x + y = ?相关面试题,主要包含被问及请快速答出此题的答案并解释:var x, y = 1; x + y = ?时的应答技巧和注意事项,需要的朋友参考一下 @t532 第一条规则 >若任何一侧是 string 或 object 则两边转换为 string 进行连接 关于object不是准确的。 举例: 按照ES标准规则,h