我正在努力寻找解决以下问题的方法,使用 Apache Flink:
我有一个向量流,由本地文件夹中的文件表示。使用 定位新文本文件后DataStream<String> text = env.readFileStream(...)
,我将 (flatMap)、Input 转换为 a SingleOutputStreamOperator<Tuple2<String, Integer>, ?>
,其中 Integer 是来自评分函数的分数。
我想保留一个包含前 k 个向量的全局 HashMap,使用它们的分数。我使用有状态的转换来解决这个问题。
我遇到的第一个问题是 HashMap 保留每个接收器的数据(因此对于每个工作线程,一个 HashMap 数据)。我怎样才能使它成为一个全球集合
使用 Apache Spark,我通过
JavaPairDStream<String, Integer> stateDstream = tuples.updateStateByKey(updateFunction);
然后在stateDstream
. 有没有办法使用 FLink 获得相同的功能?
提前致谢!