connection-pooling - HBase HTablePool : correct usage

标签 connection-pooling hbase

HTablePool 的正确使用模式是什么?我的意思是,假设我有一个用 HTablePool 实例初始化的 DAO。此 DAO 是无状态 session Bean 的成员实例,因此它在调用之间被重用。

下面的正确用法是什么?

private HTableInterface aTable;

public XYZDAO(final HTablePool pool)
{
    this.aTable = pool.getTable(...);
}

public void doSomething(...)
{
    aTable.get(...)
}

或 HTablePool 应该像数据源一样使用,因此更适合这样的用法
private HTablePool datasource;

public XYZDAO(final HTablePool pool)
{
    this.datasource = pool;
}

public void doSomething(...)
{
    HTableInterface aTable = datasource.getTable(...);
    aTable.get(...);
    aTable.close();
}

最佳答案

第二种方法是最好的,你应该使用 HTablePool就像是 Datasource自从HTable类不是线程安全的。调用close HTableInterface的方法将自动将表返回到池中。

注意有HConnection替换已弃用的 HTablePool 的接口(interface)在较新的 HBase 版本中。

关于connection-pooling - HBase HTablePool : correct usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190826/

相关文章:

Tomcat连接池ThrowableCallStack问题

java - 用于创建 JasperReport 后未释放池连接

hadoop - 如何正确配置 Hortonworks Sandbox 的客户端?

java - 将数据从mysql转换到hbase

hadoop - 使用 Oozie 将 hdfs 文件映射到 HBase

hadoop - 如何修复 Jython 和 HBase 中的 "ImportError: No module name apache"错误

java - 在 Jedis 中使用连接池

Tornado 中具有多个进程的异步连接池

java.sql.SQLException : Cannot get a connection, 池错误 等待空闲对象超时。如何恢复连接

hadoop - 同一台机器上的多个水槽代理