python 调用HBase的简单实例


Posted in Python onDecember 18, 2016

新来的一个工程师不懂HBase,java不熟,python还行,我建议他那可以考虑用HBase的thrift调用,完成目前的工作。

首先,安装thrift

下载thrift,这里,我用的是thrift-0.7.0-dev.tar.gz 这个版本

tar xzf thrift-0.7.0-dev.tar.gz
cd thrift-0.7.0-dev
sudo ./configure --with-cpp=no --with-ruby=no
sudo make
sudo make install

然后,到HBase的源码包里,找到

src/main/resources/org/apache/hadoop/hbase/thrift/

执行

thrift --gen py Hbase.thrift
mv gen-py/hbase/ /usr/lib/python2.4/site-packages/ (根据python版本可能有不同)

我这里写了些调用的脚本,供大家参考

from unittest import TestCase, main
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 ColumnDescriptor, Mutation, BatchMutation
class HBaseTester:

  def __init__(self, netloc, port, table="staftesttable"):
    self.tableName = table

    self.transport = TTransport.TBufferedTransport(
      TSocket.TSocket(netloc, port))
    self.protocol = TBinaryProtocol.TBinaryProtocol(self.transport)
    self.client = Hbase.Client(self.protocol)
    self.transport.open()

    tables = self.client.getTableNames()
    if self.tableName not in tables:
      self.__createTable()

  def __del__(self):
    self.transport.close()

  def __createTable(self):
    name = ColumnDescriptor(name='name')
    foo = ColumnDescriptor(name='foo')

    self.client.createTable(self.tableName,
                [name,foo])
  
  def put(self,key,name,foo):
    name = Mutation(column="name:v", value=name)
    foo = Mutation(column="foo:v",value=foo)
    
    self.client.mutateRow(self.tablename,key,[name,foo])
  
  def scanner(self,column):
    scanner = client.scannerOpen(self.tablename,"",[column])
				r = client.scannerGet(scanner)
				result= []
    while r:
     print r[0]
     result.append(r[0])
     r = client.scannerGet(scanner)
    print "Scanner finished"
    return result
   
  
    
    
    
     
class TestHBaseTester(TestCase):
  
  def setUp(self):
    self.writer = HBaseTester("localhost", 9090)

  def tearDown(self):
    name = self.writer.tableName
    client = self.writer.client
    client.disableTable(name)
    client.deleteTable(name)


  def testCreate(self):
    tableName = self.writer.tableName
    client = self.writer.client
    self.assertTrue(self.writer.tableName in client.getTableNames())
    columns =['name:','foo:']
    for i in client.getColumnDescriptors(tableName):
      self.assertTrue(i in columns)
      
  def testPut(self):
    self.writer.put("r1","n1","f1")
    self.writer.put("r2","n2","f2")
    self.writer.put("r3","n3","")
    self.writer.scanner("name:") 
    
if __name__ == "__main__":
  main()

以上这篇python 调用HBase的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的登录和操作开心网脚本分享
Jul 09 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
Numpy掩码式数组详解
Apr 17 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Python代码注释规范代码实例解析
Aug 14 Python
Python调用Redis的示例代码
Nov 24 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
python操作 hbase 数据的方法
Dec 18 #Python
Python合并字典键值并去除重复元素的实例
Dec 18 #Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 #Python
浅谈Python的垃圾回收机制
Dec 17 #Python
谈谈如何手动释放Python的内存
Dec 17 #Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 #Python
深入理解NumPy简明教程---数组2
Dec 17 #Python
You might like
一个颜色轮换的简单例子
2006/10/09 PHP
PHP的5个安全措施小结
2012/07/17 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
php实现可逆加密的方法
2015/08/11 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
vue组件的写法汇总
2018/04/12 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python模块搜索路径代码详解
2018/01/29 Python
python中sys.argv函数精简概括
2018/07/08 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python 中如何获取列表的索引
2019/07/02 Python
超简单的Python HTTP服务
2019/07/22 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
员工辞退通知书
2015/04/17 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Python 匹配文本并在其上一行追加文本
2022/05/11 Python