首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Flink富集

Apache Flink富集
EN

Stack Overflow用户
提问于 2021-05-11 10:18:00
回答 1查看 111关注 0票数 0

我有一个事件的源头看起来像这样

代码语言:javascript
运行
复制
class Event {
    String userName;
    String webPage;
}

我需要丰富我的事件流与过去的网页访问用户。(我有数据库中的信息,我可以使用它作为Flink源)

代码语言:javascript
运行
复制
class EventStats {
    String userName;
    Map<String,Integer> webPageCounters; 
}

如何确保在开始处理事件流之前,我将为我准备好丰富的数据?

我不想在流中执行DB调用。

EN

回答 1

Stack Overflow用户

发布于 2021-05-11 17:29:49

用Flink tbh来做这件事可能是一场斗争。想到的第一个想法是在作业启动时执行db扫描并创建单独的流。该流可以用于初始化,您可以简单地将其与实际的EventStats流结合起来,但由于这个问题。,这是目前不可能的,因此,基本上有两种解决方案可以使用。

第一种方法非常简单,因此如果您手动执行连接,则可以保留Event流中的元素,这些元素没有匹配的EventStats。如果接收到EventStats,只需检查是否有任何Event匹配可以发出。您可能还应该有一个逻辑,如果这些元素不匹配,则在一段时间后从状态中移除元素。

另一个解决方案是有点棘手,但也更优雅。因此,基本上您可以实现实现InputSelectable的自定义操作符,其方式是首先尝试使用EventStats中的所有内容,然后才开始读取Event流的元素。有一些警告,您可以参考文档获得更多信息。另外,请注意,InputSelectable是在Flink 1.9中引入的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67484778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档