在TableReducerJob中添加的HBase行是否只有在MapReduce作业完成后才可用?

在TableReducerJob中添加的HBase行是否只有在MapReduce作业完成后才可用?,mapreduce,hbase,Mapreduce,Hbase,我目前正在运行一个长的MapReduce作业,该作业有一个TableReducer正在写入HBase表。我有另一个独立程序从同一张表扫描。MapReduce作业已完成87%+项,但我的扫描程序在表中没有看到任何新行 只有在整个MapReduce作业完成后,MapReduce作业添加的行才可见吗?TableOutputFormat通过调用:table.setAutoFlush(false)启用客户端缓冲机制。作业完成后,TableRecordWrter.close()将调用table.flushC

我目前正在运行一个长的
MapReduce
作业,该作业有一个
TableReducer
正在写入HBase表。我有另一个独立程序从同一张表扫描。
MapReduce
作业已完成87%+项,但我的扫描程序在表中没有看到任何新行


只有在整个
MapReduce
作业完成后,
MapReduce
作业添加的行才可见吗?

TableOutputFormat通过调用:
table.setAutoFlush(false)
启用客户端缓冲机制。作业完成后,
TableRecordWrter.close()
将调用
table.flushCommits()
。默认缓冲区大小为2MB,您可以更改属性hbase.client.write.buffer的值


我认为HBase服务器不知道修改是否由MapReduce作业提交

在您的情况下,理想的做法是在MR作业中添加内部计数器,以便在作业跟踪器上显示内部计数器。您可能希望根据对HBase进行的“放置”次数更新这些计数器


这篇文章可能会帮助您更好。

是的,我已经有了计数器,我正在从一份MR工作中向我的HBase表写入数据,同时试图从基于web的HBase客户端读取数据,但什么也看不到,所以我只想检查一下。我有另一个MR工作正在加载,中途失败了,我不确定我是否会从失败的工作中得到零散的行,但看起来很干净。