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 list 合并连接字符串的方法
Mar 09 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
python对DICOM图像的读取方法详解
Jul 17 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python学生信息管理系统
Mar 13 Python
python的pip安装以及使用教程
Sep 18 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
Python -m参数原理及使用方法解析
Aug 21 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 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
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php jsonp单引号转义
2014/11/23 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python过滤列表用法实例分析
2016/04/29 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
SQL语言面试题
2013/08/27 面试题
老师自我鉴定范文
2013/12/25 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
生产厂长岗位职责
2014/02/21 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
转变工作作风心得体会
2016/01/23 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL