Access HBase via thrift API
更新日期:
下载thrift
开发环境是在windows下,apache thrift 提供了windows的预编译文件,直接下载即可。
使用如下命令由__*.thrift__文件生成python代码, 在子文件夹gen-py
下, 在python代码中需要将该文件夹路径添加至sys.path
。
1 | thrift --gen py <Thrift filename> |
第一次使用thrift, 出现了个小乌龙,错将参数写成*–gen python*, 然后命令行出错,说无法找到generator python。 为这个错误还在网上搜索了老半天。
HBase thrift 接口
在HBase文档中没有明确给出thift接口的使用方法, 使用搜索引擎才找到用法。
HBase thrift 接口有两个版本,称为thrift
和thrift2
, 可以从HBase的源码包拿到,压缩包中相应的路径分别是 hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift 和 hbase-thrift/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift. 这里使用的是thrift2
接口。
另外HBase thrift service 需要单独启动。 thrift和thrift2 使用相同的端口9090
,默认配置下只能使用其中一种。
start/stop thrift:
1
2$HBASE_HOME/bin/hbase-daemon.sh start thrift
$HBASE_HOME/bin/hbase-daemon.sh stop thriftstart/stop thrift2:
1
2$HBASE_HOME/bin/hbase-daemon.sh start thrift2
$HBASE_HOME/bin/hbase-daemon.sh stop thrift2检查端口占用
1
netstat -nao | grep 9090
参考:
python代码,查询HBase数据
生成的python代码中client访问HBase使用类hbase.THBaseService.Client
, 只支持数据操作,不能对表结构作查询或是变更。
1 | #!/usr/bin/env python |
Thrift 函数默认参数的问题
在hbase.thrit
中getScannerRows(scannerId, numRows)
第二个参数numRows
有指明默认值为1,
但生成的python代码并没有默认参数。
hbase.thrift:
THBaseService.py: