Guy我应该通过一些公共密钥加入一些巨大的SQL表和一些REST服务的json(我们讨论的是带有一些REST服务调用的多个sql表)。问题是这个数据不是实时/无限流,也不认为我可以通过连接列来命令REST服务的输出。现在愚蠢的方式是带来所有数据,然后匹配行,但这意味着将所有内容存储在内存/某些存储中,如Cassandra或Redis。
但是,我想知道flink是否可以使用流窗口的一些王来加入说X元素(所以实际上只是在RAM中存储那些元素)但是也存储了不匹配的元素以供以后匹配使用哈希映射。这就是我所说的智能加入。
尊敬的
答案 0 :(得分:1)
魔鬼在细节中,但是,原则上这种数据丰富对于Flink是非常可行的。您的要求并不完全清楚,但我可以提供一些指示。
对于初学者,您需要熟悉Flink的managed state接口。使用这些接口将确保您的应用程序具有容错,可升级,可重新缓存等功能。
如果您只想预加载某些数据,则可以使用RichFlatmap
并在open()方法中加载数据。在您的情况下,CoProcessFunction
可能更合适。这是一个流操作符,有两个输入,可以保持状态,还可以访问定时器(可以用来使不再需要的状态到期,并在等待无序数据到达后发出结果)。 / p>
Flink还支持asynchronous i/o,这可以提高外部服务的效率。
通过将REST服务调用包装为SQL and Table APIs,还可以考虑使用Flink的更高级别user-defined functions来解决此问题。