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

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

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

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

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

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

另一个选择可能是使用托管运算符(operator)状态来存储买家集,但如何保持按用户 ID 分配的状态,以避免单个事件查找中的网络 I/O?在内存状态后端的情况下,状态是否仍然由某个键分布,或者是否在所有操作子任务之间复制?

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

最佳答案

我将通过 user_id 对流进行关键操作,并使用 RichFlatMap 进行丰富。在 RichFlatMap 的 open() 方法中,您可以加载该用户的静态买家标志并将其缓存在 bool 字段中。

关于bigdata - 在 Flink 流中使用静态 DataSet 丰富 DataStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49645285/

相关文章:

java - Map 中的 Pair 类减少抛出错误

console - OrientDB GraphED - 可以自定义记录标识符吗? 150万条记录搜索速度很慢

solr - 如何管理非常大的 Solr 索引

python - 使用python将单元格数据拆分为多行

java - 从文件加载大 HashMap<String, TreeMap> 会给出 java.lang.OutOfMemoryError(超出 GC 开销限制)

optimization - 如何知道哪些运算符可以在 Apache Flink 中链接

apache-flink - Flink 中数据流的本地聚合

java - 正在进行的快照太多。增加kafka生产者池的大小或减少并发检查点的数量

python - 创建 df 以给定格式生成 json

python - 如何将 OHLCV 数据重新采样为 5 分钟?