Flink更新HBase时的数据一致性问题

时间:2018-09-27 13:19:26

标签: database stream hbase apache-flink consistency

像map这样的运算符中有两个具有相同键的数字。第一个数字从hbase通过键获取值,将它们相加,然后通过接收器(dataStream.write(new HBaseOutputFormat(),0L))将新值放入hbase。第二个值做同样的事情。在第一个数字更新为hbase之前,第二个数字是否有可能从hbase获取值?如果将操作员链接起来并汇聚在一起,是否可以避免此问题?如果没有,我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要的是来自DataStream API的keyBy函数,如果您使用DataSet API,则需要groupBy:请参见Flink documentation。这些功能确保始终在一个特定的插槽中处理一个特定的密钥。一个插槽代表一个线程,这意味着即使并行度大于1,您的两个数字也会被顺序处理。

当然,您必须确保对HBase的put操作被阻止,因此您不能像BufferedMutatorAsync I/O Operators那样使用异步方式与HBase进行交互。