仅限Flink Kafka消费者StreamExecutionEnvironment?

时间:2017-10-23 08:09:10

标签: apache-flink flink-streaming

我有拉动场景,

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);

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为您可能想要使用的是会话窗口。这将继续将消息收集到窗口中,并且仅在一定时间之后没有接收到事件时才处理窗口的内容。请参阅此处的会话窗口文档:https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html