Hbase api中table类属于同步操作

Hbase 常用的java api中 常通过连接创建table对象,使用此table对象完成​单条数据的插入。常规使用方式如下。

Table table = connection.getTable(TableName.valueOf(nameSpace, tableName));
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(columnName),Bytes.toBytes(value));
try {
    table.put(put);
}catch (Exception e){
    e.printStackTrace();
}
table.close();

向Hbase中执行插入单条数据时(即 table.put(put)),会经历 客户端Client发出写入请求 -> 服务端RegionSever写入WAL和MemStore​的执行过程。

​在RegionServer客户端,会调用HRegion类doMiniBatchMutate方法实现​数据的插入。Hbase2.2版本中doMiniBatchMutate方法​大致执行流程如下。

由于Client属于同步客户端类型,会等待RegionSever写入操作完成并返回反馈后​进行下一条数据的插入。

所以最开始代码片段中的 table.put(put)执行后此时再去Hbase表反查此条数据,​是可以读到这条数据的。

​附:

同步客户端和异步客户端的​区别如下(参考《HBase原理与实践》15.5节)

Hbase 2.0版中引入了异步客户端(对应着AsyncTable). 两类Table大致区别​如下。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值