java—ApacheFlink可以用于连接大量非实时数据吗?

zi8p0yeb  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(554)

我应该通过一些公共键将一些大型sql表与一些rest服务的json连接起来(我们讨论的是带有几个rest服务调用的多个sql表)。问题是,这些数据不是实时/无限流,而且我也不认为可以按连接列对rest服务的输出进行排序。现在最愚蠢的方法是把所有的数据都带出来,然后匹配行,但这意味着要把所有的东西都存储在内存中/像cassandra或redis这样的存储。
但是,我想知道flink是否可以使用流窗口中的某个king来连接x元素(所以实际上只是在ram中存储某个点上的那些元素),但也可以将不匹配的元素存储在某种hashMap中,以便以后匹配。这就是我所说的智能连接。
国王问候

h6my8fg2

h6my8fg21#

问题出在细节上,但是是的,原则上这种数据丰富在flink中是完全可行的。你的要求不是很清楚,但我可以提供一些建议。
对于初学者,您需要熟悉flink的托管状态接口。使用这些接口将确保您的应用程序是容错的、可升级的、可重新扩展的等等。
如果您只想预加载一些数据,那么可以使用 RichFlatmap 并在open()方法中加载数据。你的情况是 CoProcessFunction 可能更合适。这是一个具有两个输入的流式运算符,可以保持状态,还可以访问计时器(计时器可用于终止不再需要的状态,并在等待无序数据到达后发出结果)。
flink还支持异步i/o,这可以使使用外部服务更加高效。
我们还可以考虑使用flink的高级sql和表api来实现这一点,将rest服务调用 Package 为用户定义的函数。

相关问题