我有拉动场景,
HTTP - >卡夫卡 - > Flink - >一些输出
如果我没有错,我只能在流上使用kafka消费者吗?
因此我需要“阻止”流,以便对从HTTP呼叫接收的数据进行求和/计数。
“阻止”的最简单方法是添加窗口 /。
这种拉动方案的最佳方法是什么。
更新
我想阻止收集器对每个值求和
SingleOutputStreamOperator<Tuple2<String, Integer>> t =
in.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
@Override
public void flatMap(String s, Collector<Tuple2<String, Integer>>
collector) throws Exception {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(s);
node.elements().forEachRemaining(v -> {
collector.collect(new Tuple2<>(v.textValue(), 1));
});
}
}).keyBy(0).sum(1);
答案 0 :(得分:0)
如果我理解正确,我认为您可能想要使用的是会话窗口。这将继续将消息收集到窗口中,并且仅在一定时间之后没有接收到事件时才处理窗口的内容。请参阅此处的会话窗口文档:https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html