0

我正在尝试构建涉及大量数据摄取的数据管理(DM)解决方案,通过一些数据域规则,替换(丰富),在将错误数据发送到下游系统之前对其进行标记。规则检查和值替换可以是简单的东西,比如数据元素应该满足的允许阈值数值,也可以是更复杂的东西,比如使用域值池的主数据查找。

您认为 Apache Flink 可以成为此类处理的良好候选者吗?是否可以定义 flink 运算符来对流经它的每个元组进行查找(使用主数据)?我认为对于后一个问题使用 Apache Flink 有一些缺点 - 1)查找可能是一个阻塞操作,会降低吞吐量,2)如果操作员函数必须获取主数据,则无法执行检查点和持久化操作员状态从别处。

有什么想法?在上述用例中还有其他最好的工具吗?

谢谢

4

1 回答 1

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/bolts vs operator),实际上在大多数情况下性能/吞吐量较低,但只是一个更成熟的框架。

于 2016-08-03T08:22:19.667 回答