【问题标题】:Apache Flink enrichmentApache Flink 扩充
【发布时间】:2021-05-11 10:18:00
【问题描述】:

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

class Event {
    String userName;
    String webPage;
}

我需要通过用户过去的网页访问来丰富我的事件流。 (我在数据库中有信息,可以将其用作 Flink 源)

class EventStats {
    String userName;
    Map<String,Integer> webPageCounters; 
}

如何确保在开始处理 Event Stream 之前,我已经准备好丰富的数据?
我不想从我的流中进行数据库调用。

【问题讨论】:

    标签: java apache-flink flink-streaming


    【解决方案1】:

    使用 Flink tbh 做到这一点可能会很困难。想到的第一个想法是在作业开始时进行数据库扫描并创建一个单独的流。该流可用于初始化,您可以简单地将其与实际的EventStats 流合并,但由于this issue.,目前这是不可能的 所以,基本上有两种解决方案可以使用。

    第一个非常简单,所以如果您手动进行连接,您可以保留Event 流中没有匹配EventStats 的元素。如果您收到EventStats,您只需检查是否有可以发出的Event 匹配。如果元素不匹配,您可能还应该有一个逻辑,在一段时间后从状态中删除元素。

    另一种解决方案有点棘手,但也更优雅。因此,基本上您可以实现实现InputSelectable 的自定义运算符,它首先尝试使用EventStats 中的所有内容,然后才开始读取Event Stream 的元素。有一些注意事项,您可以参考documentation 了解更多信息。另外请注意,InputSelectable 是在 Flink 1.9 中引入的。

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      相关资源
      最近更新 更多