apache flink可以用来加入巨大的非实时数据吗?

时间:2017-11-18 01:50:06

标签: java apache apache-flink

Guy我应该通过一些公共密钥加入一些巨大的SQL表和一些REST服务的json(我们讨论的是带有一些REST服务调用的多个sql表)。问题是这个数据不是实时/无限流,也不认为我可以通过连接列来命令REST服务的输出。现在愚蠢的方式是带来所有数据,然后匹配行,但这意味着将所有内容存储在内存/某些存储中,如Cassandra或Redis。

但是,我想知道flink是否可以使用流窗口的一些王来加入说X元素(所以实际上只是在RAM中存储那些元素)但是也存储了不匹配的元素以供以后匹配使用哈希映射。这就是我所说的智能加入。

尊敬的

1 个答案:

答案 0 :(得分:1)

魔鬼在细节中,但是,原则上这种数据丰富对于Flink是非常可行的。您的要求并不完全清楚,但我可以提供一些指示。

对于初学者,您需要熟悉Flink的managed state接口。使用这些接口将确保您的应用程序具有容错,可升级,可重新缓存等功能。

如果您只想预加载某些数据,则可以使用RichFlatmap并在open()方法中加载数据。在您的情况下,CoProcessFunction可能更合适。这是一个流操作符,有两个输入,可以保持状态,还可以访问定时器(可以用来使不再需要的状态到期,并在等待无序数据到达后发出结果)。 / p>

Flink还支持asynchronous i/o,这可以提高外部服务的效率。

通过将REST服务调用包装为SQL and Table APIs,还可以考虑使用Flink的更高级别user-defined functions来解决此问题。