【问题标题】:Enriching DataStream using static DataSet in Flink streaming在 Flink 流中使用静态 DataSet 丰富 DataStream
【发布时间】:2018-04-04 07:35:58
【问题描述】:

我正在编写一个 Flink 流程序,其中我需要使用一些静态数据集(信息库,IB)来丰富用户事件的 DataStream。

例如假设我们有一个买家的静态数据集,并且我们有一个传入的事件点击流,我们希望为每个事件添加一个布尔标志,指示事件的执行者是否是买家。

实现此目的的理想方法是按用户 ID 对传入的流进行分区,让买家集在按用户 ID 再次分区的 DataSet 中可用,然后将流中的每个事件查找到此 DataSet 中。

由于 Flink 不允许在流式程序中使用 DataSet,我该如何实现上述功能?

另一种选择是使用 Managed Operator State 来存储买家集,但我如何保持此状态按用户 ID 分布,以避免单个事件查找中的网络 i/o?在内存状态后端的情况下,状态是通过某个键保持分布,还是在所有算子子任务中复制?

在 Flink 流程序中实现上述丰富需求的正确设计模式是什么?

【问题讨论】:

    标签: bigdata apache-flink data-analysis flink-streaming


    【解决方案1】:

    我将通过 user_id 对流进行键控,并使用 RichFlatMap 进行扩充。在 RichFlatMap 的 open() 方法中,您可以为该用户加载静态买家标志并将其缓存在布尔字段中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多