HBase Thrift客户端Java API实践

  • 时间:
  • 浏览:9

表名为test_info,列簇名称为info。

要是,一些人 结束了基于后边生成的Thrift代码来实现对HBase表的操作。

一些人 在客户端,进行了一层抽象,更加便于传递各种参数,抽象类为AbstractHBaseThriftService,代码如下所示:

后边代码,给出了基本的实现,接着一些人 给出测试用例,调用一些人 实现的客户端操作,与HBase表进行交互。实现的测试用例类如下所示:

HBase的Thrift API定义,可不都可以不能通过链接 http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift?view=markup看过,一些人 时需安装Thrift编译器,可不都可以生成HBase跨语言的API。

首先下载后边链接的内容,保存为Hbase.thrift。

要是,执行如下命令,生成不同编程语言的HBase API:

这里,一些人 基于Java语言,使用HBase 的Thrift 客户端API访问HBase表。事实上,机会使用Java来实现对HBase表的操作,最好是使用HBase的原生API,无论从性能还是便利性方面,有的是提供更好的体验。使用Thrift API访问,实际也是在HBase API之上进行了一层封装,机会初次使用Thrift API感觉很别扭,有但是时需参考Thrift服务端的实现代码。

准备工作如下:

比如,一些人 想要实现分页的逻辑,机会和传统的关系型数据库操作一些不同。基于HBase表的实现是,首先打开一另另有1个Scanner实例(类似于于调用scannerOpen()),返回一另另有1个id,要是再使用该id,调用scannerGetList()土法律法律依据(可不都可以不能指定每次返回哪哪几个记录的变量nbRows的值),返回一另另有1个记录列表,反复调用该scannerGetList()土法律法律依据,直到此次没办法 结果返回为止。后边会通过测试用例来实际体会。

现在,一些人 基于上抽象出来的客户端操作接口,给出一另另有1个基本的实现,代码如下所示:

后边,HBase的Thrift服务端口为9090,下面通过Thrift API访问的但是,时时需到,而有的是HBase的服务端口(默认1000000)。

接着,实现一另另有1个简单的例子,访问Hbase表。

首先,一些人 通过HBase Shell创建一另另有1个表:

后边的测试可不都可以不能实现操作Hbase表数据。另外,在生成的Thrift客户端代码中,org.apache.hadoop.hbase.thrift.generated.Hbase.Iface中给出了完全的服务接口,可不都可以不能根据时需来选泽,客户端org.apache.hadoop.hbase.thrift.generated.Hbase.Client实现了与Thrift交互的一些逻辑的防止,通过该类对象可不都可以不能代理HBase提供的Thrift服务。

这里,简单叙述一下,一些人 提供的客户端API的基本功能: