首页 文章

在Flink流中使用静态DataSet丰富DataStream

提问于
浏览
1

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

例如假设我们有一个静态的买家数据集,我们有一个传入的事件点击流,对于每个我们想要添加一个布尔标志的事件,表明该事件的实施者是否是买家 .

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

由于Flink不允许在流媒体节目中使用DataSet,我如何实现上述目标?

另一个选择可能是使用托管运营商状态来存储买家集,但是如何通过用户ID保持此状态分布,以避免单个事件查找中的网络i / o?在内存状态后端的情况下,状态是由某个密钥保持分布,还是在所有运营商子任务中复制?

在Flink流媒体节目中实现上述丰富要求的正确设计模式是什么?

1 回答

  • 2

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

相关问题