我有一个mapreduce的工作,可以写hbase。我知道你可以输出 Put
以及 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
}
}
谢谢
1条答案
按热度按时间rqcrx0a61#
据我所知,您不能在上下文中使用增量—但您可以随时打开到hbase的连接,并在任何位置(Map器、Map器清理、还原器等)写入增量
请注意,增量不是幂等的,因此在map/reduce作业部分成功时和/或在m/r上有推测性执行时,结果可能会有问题(即,多个Map器执行相同的工作)