首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HBase HTable实例中拒绝缓冲Puts (而autoFlush设置为false)?

在HBase HTable实例中拒绝缓冲Puts (而autoFlush设置为false)?
EN

Stack Overflow用户
提问于 2014-06-10 19:20:39
回答 1查看 278关注 0票数 0

我正在编写一个Java应用程序,通过Java客户端与HBase通信(版本0.94.16)。在HTable实例中,我已经将setAutoFlush设置为false,以便在put方法的每个调用之后缓冲Puts,而不是刷新。我使用这个Put缓冲区来收集相关数据,这样它们就可以同时被刷新到一起,调用flushCommits方法。但是,在我的应用程序中(在数据收集过程中),当我发现这些相关数据无法完成时,我想清除已填充的Put缓冲区,而不是刷新不完整的数据集。

因此,我的问题是:是否有任何有效的方法(在HBase客户机中),如何清除HTable实例的Puts缓冲区(丢弃其中的数据)(不进行刷新)?我知道如何实现这个Puts缓冲区,但是我希望看到一些在HBase客户机范围内的解决方案。谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 23:46:02

BufferedMutator似乎没有在JVM或机器故障之外丢弃Put缓冲区的任何东西。

我认为唯一的方法就是让你自己的PutBuffer

代码语言:javascript
复制
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() {…}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24149253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档