Hadoop MR减速器中的输出HBase增量
我有一个mapreduce作业,可以写入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
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禁用减少器的推测性执行?