Java 拒绝HBase HTable实例中的缓冲PUT(同时将自动刷新设置为false)?
我正在编写一个Java应用程序,通过[Java HBase客户端(版本0.94.16)][1]与HBase通信。在Java 拒绝HBase HTable实例中的缓冲PUT(同时将自动刷新设置为false)?,java,hbase,Java,Hbase,我正在编写一个Java应用程序,通过[Java HBase客户端(版本0.94.16)][1]与HBase通信。在HTable实例上,我已经将setAutoFlush设置为false,这样每次调用Put方法后,Put将被缓冲,而不是刷新。我使用这个Put缓冲区来收集相关数据,以便调用flushCommits方法将它们一次刷新到一起。但在我的应用程序中(在数据收集过程中)有一种情况,我发现这些相关数据无法完成,因此我想清除已填充的Puts缓冲区,而不是刷新不完整的数据集 因此,我的问题是:是否有任
HTable
实例上,我已经将setAutoFlush
设置为false,这样每次调用Put
方法后,Put
将被缓冲,而不是刷新。我使用这个Put
缓冲区来收集相关数据,以便调用flushCommits
方法将它们一次刷新到一起。但在我的应用程序中(在数据收集过程中)有一种情况,我发现这些相关数据无法完成,因此我想清除已填充的Put
s缓冲区,而不是刷新不完整的数据集
因此,我的问题是:是否有任何有效的方法(在Java HBase客户端中)来清除HTable
实例的Puts缓冲区(丢弃其中的数据)(而不刷新)?我知道如何实现这一点,但我希望在JavaHBase客户机的范围内看到一些解决方案。谢谢你的建议。
似乎没有任何东西会在JVM或机器故障之外丢弃Put缓冲区
我想唯一的办法就是自己做一个
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() {…}
}