一条数据的HBase之旅,简明HBase入门教程6:写数据接口
可选接口
HBase中提供了如下几种主要的接口:
Java Client API
HBase的基础API,应用最为广泛。
HBase Shell
基于Shell的命令行操作接口,基于Java Client API实现。
Restful API
Rest Server侧基于Java Client API实现。
Thrift API
Thrift Server侧基于Java Client API实现。
MapReduce Based Batch Manipulation API
基于MapReduce的批量数据读写API。
除了上述主要的API,HBase还提供了基于Spark的批量操作接口以及C++ Client接口,但这两个特性都被规划在了3.0版本中,当前尚在开发中。
无论是HBase Shell/Restful API还是Thrift API,都是基于Java Client API实现的。因此,接下来关于流程的介绍,都是基于Java Client API的调用流程展开的。
关于表服务接口的抽象
同步连接与异步连接,分别提供了不同的表服务接口抽象:
Table 同步连接中的表服务接口定义
AsyncTable 异步连接中的表服务接口定义
异步连接AsyncConnection获取AsyncTable实例的接口默认实现:
同步连接ClusterConnection的实现类ConnectionImplementation中获取Table实例的接口实现:
写数据的几种方式
Single Put
单条记录单条记录的随机put操作。Single Put所对应的接口定义如下:
在AsyncTable接口中的定义:
CompletableFuture<Void> put(Put put);
在Table接口中的定义:
void put(Put put) throws IOException;
Batch Put
汇聚了几十条甚至是几百上千条记录之后的小批次随机put操作。
Batch Put只是本文对该类型操作的称法,实际的接口名称如下所示:
在AsyncTable接口中的定义:
List<CompletableFuture<Void>> put(List<Put> puts);
在Table接口中的定义:
void put(List<Put> puts) throws IOException;
Bulkload
基于MapReduce API提供的数据批量导入能力,导入数据量通常在GB级别以上,Bulkload能够绕过Java Client API直接生成HBase的底层数据文件(HFile)。
- 点赞
- 收藏
- 关注作者
评论(0)