我有一个写入到HBase的mapreduce作业。我知道您可以使用输出Put
并Delete
从减速器输出TableMapReduceUtil
。
是否有可能Increment
使HBase表中的值递增而不是使Puts
and发出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
}
}
谢谢
据我所知,您不能在上下文中使用Increment-但您始终可以打开与HBase的连接,并在任何位置(映射器,映射器清理,Reducer等)写入Increment。
请注意,增量不是幂等的,因此如果部分成功完成map / reduce作业和/或对M / R进行推测性执行(例如,多个映射器执行相同的工作),则结果可能会出现问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句