可以在Flink App中的FlatMapFunction中访问数据库吗?

时间:2017-07-13 21:20:13

标签: apache-flink flink-streaming

我正在使用kafka主题作为数据流并使用FlatMapFunction处理数据。处理包括丰富来自流的实例以及从数据库执行查询以获取输出的更多数据,但是,它认为这不是最佳方法。

阅读文档我知道我可以从数据库查询创建一个DataSet,但我只看到了批处理的例子。

我可以使用DataStream和DataSet执行合并/缩小(或其他操作)来实现这一目标吗?

使用DataSet而不是直接访问数据库,我可以获得任何性能提升吗?

1 个答案:

答案 0 :(得分:1)

使用Flink的DataStream API可以采用各种方法来实现这种丰富。

(1)如果您只想一次性获取所有数据,可以使用在其open()方法中执行查询的有状态RichFlatmapFunction。

(2)如果你想对每个流元素进行查询,那么你可以在FlatmapFunction中同步执行,或者查看AsyncIO以获得更高效的方法。

(3)为了获得最佳性能,同时从外部数据库获取最新值,请查看数据库更改流中的流式传输以及使用CoProcessFunction进行流式连接。像http://debezium.io/之类的东西在这里很有用。