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中使用Boolean操作符做真值测试实例
Jan 30 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python collections模块使用方法详解
Aug 28 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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
zend framework配置操作数据库实例分析
2012/12/06 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
Prototype Template对象 学习
2009/07/19 Javascript
javascript中的array数组使用技巧
2010/01/31 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
Python实现的HTTP并发测试完整示例
2020/04/23 Python
python unittest实现api自动化测试
2018/04/04 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
虚拟机下载python是否需要联网
2020/07/27 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
班级入场式解说词
2014/02/01 职场文书
宣传标语大全
2014/07/01 职场文书
老公保证书怎么写
2015/02/26 职场文书
后勤工作个人总结
2015/02/28 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书