2014-02-27 43 views
3

我有一個寫入HBase的mapreduce作業。我知道您可以使用TableMapReduceUtil從減速機輸出PutDelete在MR減速器中輸出HBase增量

是否有可能發出Increment增加HBase表中的值而不是發出PutsGets?如果是的話,怎麼做,如果沒有,那爲什麼?

我使用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

據我知道你不能在環境中使用增量 - 但你可以隨時打開HBase的連接,隨時隨地寫增量( mapper,mapper cleanup,reducer等)

請注意增量不是冪等性的,所以結果可能會對map/reduce作業的部分成功和/或如果您有M/R的推測性執行有問題(即多個mappers做同樣的工作)

+0

也許是第二個問題,但是如何禁用使用java api的reducer的推測執行? – Tucker