关于Apache Flink框架的问题。
有没有办法在单个flink工作中支持像kafka和twitter这样的多个流媒体源?是否有任何解决方法。我们可以在单个flink工作中一次处理多个流媒体源吗?
我目前正在使用Spark Streaming,这就是限制。
这可以通过Apache Samza,Storm或NIFI等其他流式传输框架实现吗?
期待已久的回应。
答案 0 :(得分:3)
是的,这在Flink和Storm中是可能的(没有关于Samza或NIFI的线索......)
您可以根据需要添加任意数量的源运算符,并且每个运算符都可以使用不同的源。
StreamExecutionEnvironment see = 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,模式类似。见An Apache Storm bolt receive multiple input tuples from different spout/bolt
答案 1 :(得分:0)
已经涵盖了一些解决方案,我只想补充一下,在NiFi流中,您可以摄取许多不同的来源,并分别或一起处理它们。
还可以提取源,并有多个团队在此基础上构建流,而无需多次提取数据。