之前工作中用到了kafka和hbase进行数据实时同步,用的javaAPI,这边自己想用python简单实现下。
hbase是目前大数据领域比较火的列存储数据库,提供了原生的JavaAPI。如果其他语言想要编写客户端,需要用到thrift接口服务器(不太稳定并且性能也不理想,根据官方文档,thrift很可能被抛弃???)。
1.在Linux中安装Thrift(指定版本):
(1)下载thrift ( http://archive.apache.org/dist/thrift/ )
去下载thrift安装包,选择自己需要的 版本 (我安装的是 0.9.1)
下载thrift-0.9.1.tar.gz(压缩包)
(2)解压thrift-0.9.1.tar.gz
进入解压后的文件件,再执行以下步骤
(3)安装thrift依赖的其他软件包
使用sudo yum install 命令进行安装
sudo yum install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
如果后面编译有问题,可能还需要:
yum install gcc build-essential
yum install gcc gcc-c++ autoconf automake
(4)开始安装thrift
a) 运行软件根目录下的configure脚本
$ ./configure
$ make
$ make install
一顿折腾 终于搞定
(5)测试thrift是否安装成功
输入 $ thrift -version命令,查看输出信息判断thrift是否安装成功
Thrift version 0.9.1
接下来启动ThriftServer:
sh hbase-daemon.sh start thrift
jps命令查看下 会有个ThriftServer进程 测试连接通了说明搞定
2.使用happybase
先看一眼happybase的demo:
很简洁,也可以使用ConnectionPool连接池来创建连接,连接池对象支持with as管理上下文
查询:
首先需要得到一个table对象
table.row:指定rowkey查询
table.rows:根据rowkey列表批量查询
table.scan:可以根据row_start和row_stop查询,也可以使用row_prefix模糊查询
返回的value字典内的字段都是bytes类型,需要解码
提交:
table.put(rowkey,value)
也可以使用table.batch()进行批量提交
其他API使用可以查看源码或者参考https://blog.csdn.net/xc_zhou/article/details/80868332 比较全