有没有办法用Flink Streaming计算流中唯一单词的数量?结果将是一个不断增加的数字流.
Spark DStream有mapPartitionAPI,而Flink DataStreamAPI没有.是否有人可以帮助解释原因.我想要做的是实现类似于reduceByKeyFlink 上的Spark的API .
例如,有两个流.一个是向用户显示的广告.其中的元组可以描述为(advertiseId,显示时间戳).另一个是点击流 - (advertiseId,点击时间戳).我们希望获得一个联合流,其中包括用户在显示后20分钟内点击的所有广告.我的解决方案是在SlidingTimeWindow上加入这两个流.但是在连接的流中,有许多重复的元组.我怎么能在新流中只加入一个元组?
stream1.join(stream2)
.where(0)
.equalTo(0)
.window(SlidingTimeWindows.of(Time.of(30, TimeUnit.MINUTES), Time.of(10, TimeUnit.SECONDS)))
Run Code Online (Sandbox Code Playgroud) 例如,我有很多单词,想要计算每个单词.问题是这些词是倾斜的.这意味着某些单词的频率非常高,但大多数其他单词的频率很低.在风暴中,我们可以使用以下方式来解决此问题.首先对流进行随机分组,在每个节点中计算窗口时间本地的单词,最后更新计入累积结果.从我的另一个问题,我知道Flink只支持键控流上的窗口,否则窗口操作将不是并行的.
我的问题是有没有一种很好的方法来解决Flink中这种扭曲的数据问题?