python利用thrift服务读取hbase数据的方法


Posted in Python onDecember 27, 2018

因工作需要用python通过hbase的thrift服务读取Hbase表数据,发现公司的测试环境还不支持,于是自己动手准备环境,在此我将在安装步骤尽可能描述清楚,旨在给第一次动手安装的朋友,此过程亲测成功!

安装过程如下:

1、首先确保hbase安装测试成功,再者确认下hbase的thrift服务是否启动,注意目前的Hbase(本文基于版本0.98.17)有两套thrift接口thrift和thrift2,本文使用thrift,启动命令:hbase thrift -p 9090 start,确保该端口没有被占用,使用lsof -i:9090查看),本公司测试环境该端口被占用,如果被占用换一个没有被占用的端口即可;

2、安装thrift,去官网下载thrift:http://thrift.apache.org/download,本人使用 thrift-0.10.0.tar.gz ,下载好后编译安装,解压后进入安装目录/home/hadoop/thrift-0.10.0,分别执行./configure make,make,sudo make install,注意这边可能因各环境不同可能遇到问题,具体安装所需环境请参考官网:http://thrift.apache.org/docs/install/centos,安装之后可以用thrift -version命令测试是否安装成功,安装成功后会显示安装的版本;

3、确保1和2没有问题,接下来需要生成python脚本需要导入的hbase相关模块,首先去官网下载hbase源码,注意虽然本公司用的hbase版本是0.98.17但是只要版本相差不大都可以使用,本人使用的是 hbase-0.98.24-src.tar.gz,下载解压后找到thrift目录:hbase-0.98.24/hbase-thrift/src/main/resources/org/apache/hadoop/hbase,该目录下有两个thrift服务,进入thrift后执行thrift --gen pyHbase.thrift,不出现问题会在该thrift目录下生成目录 gen-py,里面具体是hbase模块,将该目录名称改为hbase,并拷贝进python模块包:cp -r hbase /usr/lib/python2.7/site-packages/,至此python需要使用的hbase模块已经准备好;

4、写python脚本测试

#! /usr/bin/python
import sys
sys.path.append('/usr/lib/python2.7/site-packages/hbase') # 引入正确的hbase模块路径,测试过可删除
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
from hbase.ttypes import *
 
transport = TSocket.TSocket('101.71.51.221', 9099)
transport = TTransport.TBufferedTransport(transport)
 
protocol = TBinaryProtocol.TBinaryProtocol(transport)
 
client = Hbase.Client(protocol)
 
transport.open()
 
tableName = 'hb_vender'
rowKey = '17_bcc5f02a876b010cbcd3fb2f82ab5b8e_43_111_57_437b9e2a-257c-4115-9570-bcd61741b3dc'
 
result = client.getRow(tableName, rowKey, None)
print result
for r in result:
	print 'the row is ' , r.row
	print 'the values is ' , r.columns.get('a:venderName').value

注意这边可能出现:ImportError: No module named six,因为需要安装six,如果已经安装pip,使用pip install six,如果没有安装用root执行安装:easy_install six,安装成功后执行脚本测试成功!

以上这篇python利用thrift服务读取hbase数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式匹配ip地址实例
Oct 09 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
Python中subprocess模块用法实例详解
May 20 Python
详解Django中的过滤器
Jul 16 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
Python实现基于POS算法的区块链
Aug 07 Python
在Python中获取操作系统的进程信息
Aug 27 Python
python实现信号时域统计特征提取代码
Feb 26 Python
python绘制汉诺塔
Mar 01 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
python hbase读取数据发送kafka的方法
Dec 27 #Python
Python类和对象的定义与实际应用案例分析
Dec 27 #Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 #Python
kafka-python批量发送数据的实例
Dec 27 #Python
Python闭包思想与用法浅析
Dec 27 #Python
对python操作kafka写入json数据的简单demo分享
Dec 27 #Python
python消费kafka数据批量插入到es的方法
Dec 27 #Python
You might like
php遍历数组的方法分享
2012/03/22 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python安装requests库的实例代码
2019/06/25 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
Subside Sports德国:足球球衣和球迷商品
2019/06/08 全球购物
县优秀教师事迹材料
2014/01/31 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
教师学习心得体会范文
2016/01/21 职场文书