python 调用HBase的简单实例

 更新时间:2016年12月18日 12:09:23   投稿:jingxian  
下面小编就为大家带来一篇python 调用HBase的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

新来的一个工程师不懂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的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于matplotlib中ion()和ioff()的使用详解

    基于matplotlib中ion()和ioff()的使用详解

    这篇文章主要介绍了基于matplotlib中ion()和ioff()的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python 实现客户端与服务端的通信

    python 实现客户端与服务端的通信

    这篇文章主要介绍了python 实现客户端与服务端的通信的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python编程进阶代码逻辑分离指南

    Python编程进阶代码逻辑分离指南

    在 Python 编程中,适当的代码逻辑分离可以帮助降低复杂度、提高可读性,减少大量的 if-else 结构,本文将深入探讨如何使用不同方法来改进代码结构,降低对 if-else 结构的依赖
    2023-12-12
  • Python 字符串的有关知识详解

    Python 字符串的有关知识详解

    这篇文章主要为大家介绍了Python的字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • Python集合魔法解锁数据去重技巧应用实例

    Python集合魔法解锁数据去重技巧应用实例

    这篇文章主要为大家介绍了Python集合魔法解锁数据去重技巧应用实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Python-re中search()函数的用法详解(查找ip)

    Python-re中search()函数的用法详解(查找ip)

    这篇文章主要介绍了Python-re中search()函数的用法-----查找ip,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Python中使用zip函数的七重境界解析

    Python中使用zip函数的七重境界解析

    这篇文章主要介绍了Python中使用zip函数的七重境界,重点介绍了Python中功能强大的zip 函数的多种用法,并给出了相应的代码示例,需要的朋友可以参考下
    2022-12-12
  • OpenCV-Python实现凸包的获取

    OpenCV-Python实现凸包的获取

    凸包是一个计算几何中的概念,在图像处理过程中,我们常常需要寻找图像中包围某个物体的凸包,本文就使用OpenCV实现,感兴趣的可以了解一下
    2021-06-06
  • Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决

    Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决

    在使用matplotlib作图的时候,有的时候会遇到画图时显示不全和图片保存时不完整的问题,这篇文章主要给大家介绍了关于Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决方法,需要的朋友可以参考下
    2022-06-06
  • pytorch 同步机制的实现

    pytorch 同步机制的实现

    在PyTorch中,当多个算子和内核被并行执行时,PyTorch 通过 CUDA 的流和事件机制来管理并发和同步,本文就来介绍一下pytorch 同步机制,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09

最新评论