【发布时间】: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