我正在尝试构建涉及大量数据摄取的数据管理(DM)解决方案,通过一些数据域规则,替换(浓缩),在将错误数据发送到下游系统之前标记错误数据。规则检查&值替换可以是一些简单的东西,比如数据元素应该满足的允许阈值数值,更复杂的东西,比如使用域数值池的主数据进行查找。
您认为Apache Flink是否适合进行此类处理?是否可以定义flink运算符来为每个元组进行查找(使用主数据)?我认为使用Apache Flink来解决后一个问题存在一些缺点 - 1)查找可能是阻塞操作会降低吞吐量,2)如果操作员函数必须获取主数据,则无法检查点和持久化操作员状态来自其他地方。
有什么想法?在上述用例中是否还有其他最佳工具?
由于
答案 0 :(得分:0)
简短的回答是“是”'。你可以使用Flink来处理你提到的所有事情,包括数据查找和丰富,但需要注意的是你不会对操作员造成的副作用保持最多一次或完全一次保证(比如更新外部状态) 。)您可以解决在该特定运算符上具有更高并行性的外部查找的额外延迟。
如果没有更多信息,例如准确构成什么样的高容量数据,就无法给出准确的答案。'在你的情况下,你的每个事件延迟要求是什么,你有什么其他约束,等等。但是,在一般意义上,在你承诺使用Flink之前,你应该看看Spark Streaming和Apache Storm并进行比较。 Spark和Storm都有更大的社区和更多的文档,所以它可以为你节省长朗姆酒的痛苦。撰写本文时StackOverflow上的标签:spark-streaming x 1746,apache-storm x 1720,apache-flink x 421
更重要的是,Spark Streaming与Flink具有相似的语义,但可能会为您提供更好的批量数据吞吐量。或者,Storm在概念上类似于Flink(spouts / bolt vs运算符),并且在大多数情况下实际上具有较低的性能/吞吐量,但它只是一个更成熟的框架。