我正在尝试构建涉及大量数据摄取的数据管理(DM)解决方案,通过一些数据域规则,替换(丰富),在将错误数据发送到下游系统之前对其进行标记。规则检查和值替换可以是一些简单的东西,比如数据元素应该满足的允许阈值数值,也可以是一些更复杂的东西,比如对域值池的主数据进行查找。
您认为Apache Flink可以作为这种处理的一个很好的候选者吗?是否可以定义flink运算符来对流经它的每个元组进行查找(使用主数据)?对于后一个问题,我认为使用Apache Flink有一些缺点- 1)查找可能是一个阻塞操作,会降低吞吐量;2)如果操作员函数必须从其他地方获取主数据,则无法进行检查点和保持操作员状态。
他们的想法是什么?在上面的用例中有没有其他最好的工具?
谢谢
发布于 2016-08-03 16:22:20
简而言之,答案是“是”。您可以将Flink用于您提到的所有事情,包括数据查找和丰富,但需要注意的是,您不会对操作符造成的副作用(如更新外部状态)提供至多一次或恰好一次的保证。您可以在该特定运算符上使用更高的并行度来解决外部查找增加的延迟问题。
在没有更多信息的情况下,给出准确的答案是不可能的,比如在你的案例中,什么是真正的“大容量数据”,你的每个事件的延迟要求是什么,你有什么其他限制,等等。然而,在一般意义上,在你承诺使用Flink之前,你应该同时看看Spark Streaming和Apache Storm,并进行比较。Spark和Storm都有更大的社区和更多的文档,所以它可能会省去你在朗姆酒中的一些痛苦。撰写本文时StackOverflow上的标签: spark-streaming x1746,apache-storm x1720,apache-flink x421
更重要的是,Spark Streaming具有类似于Flink的语义,但可能会为您提供更好的批量数据吞吐量。或者,Storm在概念上类似于Flink (spouts/bolts vs operators),实际上在大多数情况下具有较低的性能/吞吐量,但只是一个更成熟的框架。
https://stackoverflow.com/questions/38722420
复制相似问题