如何提供 Apache Flink DataStream

Posted

技术标签:

【中文标题】如何提供 Apache Flink DataStream【英文标题】:How to feed an Apache Flink DataStream 【发布时间】:2017-11-28 13:08:16 【问题描述】:

我是 Apache Flink 的新手。我想创建一个 DataStream 并用来自另一个系统的值来提供它。

我找到了如何添加“SourceFunctions”的示例,在该函数中,我必须等待来自源的值并通过调用 ctx.collect 将这些值发布到 Flink,然后再次等待,它是轮询。

但是我有一个数据源,它在值到达时调用一个函数(异步)。所以,我想做的是:当这个异步调用发生时,我想把值放到 Flink DataStream 中,伪代码:

mysystem.connect_to_values( (value) => myflinkdatastream.put(value.toString) )

这可以吗?否则我必须在 SourceFunction 中执行我的连接和回调,然后在睡眠中执行一个循环,但我不想这样做......

我已经在 Flink 中看到了“用于外部数据访问的异步 I/O”,但为此我仍然需要一个源流,它是带有 SourceFunctions (Poll/Loop) 的源。

【问题讨论】:

【参考方案1】:

如果您不想在流式作业中添加SourceFunction,我建议使用Kafka或其他消息队列,您可以将数据从异步源发送到该队列,并将Flink Streaming Job连接到消息队列。

【讨论】:

谢谢,但我不想在这种情况下添加额外的系统。但这并不是那么重要,如果没有异步方式,那么我会以轮询方式进行......

以上是关于如何提供 Apache Flink DataStream的主要内容,如果未能解决你的问题,请参考以下文章

如何提供 Apache Flink DataStream

干货 | 如何使用功能强大的 Apache Flink SQL

使用 Apache Flink 开发实时ETL

apache Flink初探

Apache Flink是啥?

如何选择Apache Spark和Apache Flink