在类似运算符的Map中,有两个数字具有相同的键。第一个数字从hbase按键获取值,将它们相加,然后通过sink(datastream.write(new hbaseoutputformat(),0l))将新值放入hbase。第二个值做同样的事情。在第一个数字更新到hbase之前,第二个数字是否可能从hbase获取值?如果我把接线员和Flume连在一起,我能避免这个问题吗?如果没有,我该怎么办?谢谢!
在类似运算符的Map中,有两个数字具有相同的键。第一个数字从hbase按键获取值,将它们相加,然后通过sink(datastream.write(new hbaseoutputformat(),0l))将新值放入hbase。第二个值做同样的事情。在第一个数字更新到hbase之前,第二个数字是否可能从hbase获取值?如果我把接线员和Flume连在一起,我能避免这个问题吗?如果没有,我该怎么办?谢谢!
1条答案
按热度按时间xa9qqrwz1#
你需要的是
keyBy
函数,或groupBy
如果您使用数据集api:请参阅flink文档。这些函数确保一个特定的密钥始终由一个特定的插槽处理。一个插槽代表一个线程,这意味着两个数字是按顺序处理的,即使并行度大于1。当然,您必须确保对hbase的put操作是阻塞的,因此您不能使用像
BufferedMutator
或异步i/o运算符。