HBase Thrift客户端Java API实践

  • 时间:
  • 浏览:2
  • 来源:大发5分3D_大发5分3D官方

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

假使 ,大家开使了了基于底下生成的Thrift代码来实现对HBase表的操作。

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

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

底下,HBase的Thrift服务端口为9090,下面通过Thrift API访问的随后 ,可不也能用到,而总要HBase的服务端口(默认50000)。

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

首先,大家通过HBase Shell创建有另4个表:

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

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:

底下的测试可不也能 实现操作Hbase表数据。另外,在生成的Thrift客户端代码中,org.apache.hadoop.hbase.thrift.generated.Hbase.Iface中给出了完整篇 的服务接口,可不也能 根据可不也能来选者,客户端org.apache.hadoop.hbase.thrift.generated.Hbase.Client实现了与Thrift交互的很多逻辑的防止,通过该类对象可不也能 代理HBase提供的Thrift服务。

比如,大家我应该 实现分页的逻辑,不可能 和传统的关系型数据库操作很多不同。基于HBase表的实现是,首先打开有另4个Scanner实例(累似 调用scannerOpen()),返回有另4个id,假使 再使用该id,调用scannerGetList()法律土办法(可不也能 指定每次返回几块记录的变量nbRows的值),返回有另4个记录列表,反复调用该scannerGetList()法律土办法,直到此次没办法 结果返回为止。底下会通过测试用例来实际体会。

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

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

准备工作如下: