Apache Flink Job中支持多个Streams

时间:2016-11-06 17:35:15

标签: frameworks apache-flink apache-nifi flink-streaming

关于Apache Flink框架的问题。

有没有办法在单个flink工作中支持像kafka和twitter这样的多个流媒体源?是否有任何解决方法。我们可以在单个flink工作中一次处理多个流媒体源吗?

我目前正在使用Spark Streaming,这就是限制。

这可以通过Apache Samza,Storm或NIFI等其他流式传输框架实现吗?

期待已久的回应。

2 个答案:

答案 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流中,您可以摄取许多不同的来源,并分别或一起处理它们。

还可以提取源,并有多个团队在此基础上构建流,而无需多次提取数据。