我有一个写入HBase的mapreduce作业。我知道您可以使用Put
从reducer中输出Delete
和TableMapReduceUtil
。
是否可以发出Increment
来增加HBase表中的值而不是发出Puts
和Gets
?如果是的话,怎么做,如果不是,为什么呢?
我正在使用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
}
}
谢谢
答案 0 :(得分:1)
据我所知,你不能在上下文中使用Increment - 但是你总是可以打开与HBase的连接并在任何地方写入Increments(mapper,mapper cleanup,reducer等)。
请注意,增量不是幂等的,因此结果可能会对map / reduce作业的部分成功产生问题和/或如果您有M / R的推测执行(即多个映射器执行相同的工作)