我对Flink
或Spark
没有任何经验,并且我想将其中的一个用于我的用例。我想介绍一下我的使用案例,希望能够了解一下这两者是否可以完成,如果他们都可以这样做,哪一个最好。用于增量数据的Flink或Spark
我有一堆存储在数据存储中的实体A
(Mongo是精确的,但确实没关系)。我有一个Java应用程序,可以加载这些实体和运行一些逻辑他们生成一些数据类型的流E
(要100%清除我没有Es
在任何数据集中,我需要生成它们在Java中后,我加载从DB的As
)
所以我有这样的事情
A1 -> Stream<E>
A2 -> Stream<E>
...
An -> Stream<E>
数据类型E
有点像一长排在Excel中,它有一堆列。我需要收集所有Es
并运行某种类型的透视汇总,就像在Excel中所做的那样。我可以看到在Spark
或Flink
中我可以如何轻松完成这项工作。
现在是我无法弄清的部分。
想象该实体A1
中的一个被改变(由用户或处理),即意味着所有Es
为A1
需要更新。当然,我可以重新加载我的所有As
,重新计算所有Es
,然后重新运行整个聚合。我想知道是否可以在这里更聪明一点。
是否有可能只重新计算Es
的A1
并执行最小处理量。
对于Spark
是否可以坚持RDD
并且只在需要时更新其中的一部分(这里是Es
的A1
)?
对于Flink
,在流式传输的情况下,是否可以更新已处理的数据点?它能处理那种情况吗?或者,我可能会生成负面事件A1
的旧Es
(即将它们从结果中删除),然后添加新的?
这是一个常见的用例吗?那甚至是Flink
或Spark
的设计目的?我会这么想,但我还没有用过,所以我的理解非常有限。
我一直试图捕捉问题的本质。你说答案取决于很多条件。您希望我可以扩展哪些方面的问题? – phoenix7360