2014-06-10 17 views
0

我正在通過[Java HBase客戶端(版本0.94.16)] [1]編寫與HBase進行通信的Java應用程序。在HTable實例中,我已將setAutoFlush設置爲false,因此在每次調用put方法後,將緩衝Put而不是刷新。我用這個Put緩衝區來收集相關數據,以便它們可以一次調用flushCommits方法一起刷新。但是當我發現這些相關數據無法完成時,我的應用程序(在數據收集過程中)出現了一種情況,所以我想清除已填充的緩衝區而不是刷新不完整的數據集。拒絕緩衝放入HBase HTable實例(雖然autoFlush設置爲false)?

所以我的問題是:有沒有什麼有效的方法(在Java HBase客戶端內)如何清除HTable實例(無沖洗)的Puts緩衝區(丟棄其中的數據)?我知道如何自己實現這個Puts緩衝區,但我很想在Java HBase客戶端的範圍內看到一些解決方案。謝謝你的建議。

回答

0

BufferedMutator 似乎並不具有任何丟棄一個JVM或機器故障外放置緩衝區..

我認爲唯一的辦法就是讓自己PutBuffer

public class PutBuffer { 
    public PutBuffer(ConnectionFactory connectionFactory) {…} 
    public void setFlushTimeout(int millis) {…} 
    public int getFlushTimeout() {…} 
    public void addPut(TableName table, Put put) {…} 
    public void discardBuffer(TableName table) {…} 
    public void flush() {…} 
}