关于Apache Flink框架的问题
是否有办法在单个flink作业中支持多个流媒体源,如kafka和twitter ?有没有别的办法。我们可以在一个flink作业中同时处理多个流源吗?
我目前正在Spark Streaming工作,这是那里的限制。
这是否可以通过其他流媒体框架如Apache Samza,Storm或NIFI实现?
等待回复。
是的,这在Flink和Storm中是可能的(没有关于Samza或NIFI的线索…)
你可以添加任意数量的源操作符,每个操作符都可以从不同的源中消费。
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
Properties properties = ... // see Flink webpage for more details
DataStream<String> stream1 = env.addSource(new FlinkKafkaConsumer08<>("topic", new SimpleStringSchema(), properties);)
DataStream<String> stream2 = env.readTextFile("/tmp/myFile.txt");
DataStream<String> allStreams = stream1.union(stream2);
对于使用底层API的Storm,模式是类似的。参见Apache Storm bolt从不同的spout/bolt接收多个输入元组
已经涵盖了一些解决方案,我只是想在NiFi流中添加,您可以摄取许多不同的源,并单独或一起处理它们。
也可以摄取一个源,并让多个团队在此基础上构建流,而不需要多次摄取数据。