Hadoop MR减速器中的输出HBase增量

Hadoop MR减速器中的输出HBase增量,hadoop,mapreduce,hbase,counter,increment,Hadoop,Mapreduce,Hbase,Counter,Increment,我有一个mapreduce作业,可以写入HBase。我知道您可以使用TableMapReduceUtil从减速机输出Put和Delete 是否可以发射Increment以增加HBase表中的值,而不是发射put和get?如果是,怎么做?如果不是,为什么 我用的是CDH3 public static class TheReducer extends TableReducer<Text, Text, ImmutableBytesWritable> { public void

我有一个mapreduce作业,可以写入HBase。我知道您可以使用
TableMapReduceUtil
从减速机输出
Put
Delete

是否可以发射
Increment
以增加HBase表中的值,而不是发射
put
get
?如果是,怎么做?如果不是,为什么

我用的是CDH3

public static class TheReducer extends TableReducer<Text, Text, ImmutableBytesWritable>  {  
    public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {         
        ///....DO SOME STUFF HERE
        Increment increment = new Increment(row);
        increment.addColumn(col,qual,1L);
        context.write(null, increment); //<--- I want to be able to do this                             
        }
}
公共静态类reducer扩展了TableReducer{
public void reduce(文本键、Iterable值、上下文上下文)抛出IOException、InterruptedException{
///……在这里做些事情
增量=新增量(行);
增量。添加列(列、相等、1L);

write(null,increment);//据我所知,您不能在上下文中使用increment-但您始终可以打开到HBase的连接并在任何位置(映射器、映射器清理器、还原器等)写入增量


请注意,增量不是幂等的,因此如果映射/减少作业部分成功,和/或如果对M/R执行推测性执行(即多个映射者执行相同的工作),则结果可能会有问题。

可能是第二个问题,但如何使用java api禁用减少器的推测性执行?