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

时间:2018-04-04 07:35:58

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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