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交换变量
Sep 06 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Python迭代器定义与简单用法分析
Apr 30 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python实现批量修改文件名
Mar 23 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
教你使用TensorFlow2识别验证码
Jun 11 Python
Python自动化爬取天眼查数据的实现
Jun 15 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
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
JavaScript类的写法
2016/09/17 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
layui使用label标签的方法
2019/09/14 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python中几种操作字符串的方法的介绍
2015/04/09 Python
python实现人脸识别代码
2017/11/08 Python
python实现excel读写数据
2021/03/02 Python
Anaconda入门使用总结
2018/04/05 Python
Python continue继续循环用法总结
2018/06/10 Python
python绘制立方体的方法
2018/07/02 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
有多年工作经验的自我评价
2014/03/02 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python