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使用Flask框架同时上传多个文件的方法
Mar 21 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
python学生信息管理系统
Mar 13 Python
python实现图片批量压缩程序
Jul 23 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Python requests设置代理的方法步骤
Feb 23 Python
python numpy--数组的组合和分割实例
Feb 24 Python
20行Python代码实现视频字符化功能
Apr 13 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 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
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
Nest.js散列与加密实例详解
2021/02/24 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python将图片转base64,实现前端显示
2020/01/09 Python
如何教少儿学习Python编程
2020/07/10 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
幼儿园教师备课制度
2014/01/12 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
办理房产证委托书
2014/09/18 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python