HTablePool 的使用方法

HTablePool可以解决HTable存在的线程不安全问题,同时通过维护固定数量的HTable对象,能够在程序运行期间复用这些HTable资源对象。

Configuration conf = HBaseConfiguration.create(); HTablePool pool = new HTablePool(conf, 10);

1.   HTablePool可以自动创建HTable对象,而且对客户端来说使用上是完全透明的,可以避免多线程间数据并发修改问题。

2.   HTablePool中的HTable对象之间是公用Configuration连接的,能够可以减少网络开销。

HTablePool的使用很简单:每次进行操作前,通过HTablePool的getTable方法取得一个HTable对象,然后进行put/get/scan/delete等操作,最后通过HTablePool的putTable方法将HTable对象放回到HTablePool中。

下面是个使用HTablePool的简单例子:

复制代码
public void createUser(String username, String firstName, String lastName, String email, String password, String roles) throws IOException {   HTable table = rm.getTable(UserTable.NAME);   Put put = new Put(Bytes.toBytes(username));   put.add(UserTable.DATA_FAMILY, UserTable.FIRSTNAME,   Bytes.toBytes(firstName));   put.add(UserTable.DATA_FAMILY, UserTable.LASTNAME,     Bytes.toBytes(lastName));   put.add(UserTable.DATA_FAMILY, UserTable.EMAIL, Bytes.toBytes(email));   put.add(UserTable.DATA_FAMILY, UserTable.CREDENTIALS,     Bytes.toBytes(password));   put.add(UserTable.DATA_FAMILY, UserTable.ROLES, Bytes.toBytes(roles));   table.put(put);   table.flushCommits();   rm.putTable(table); }
复制代码

至于多线程使用HTablePool的真实性能情况,需要通过实际的测试工作得到。


你可能感兴趣的:(HTablePool 的使用方法)