python操作 hbase 数据的方法


Posted in Python onDecember 18, 2016

配置 thrift

python使用的包 thrift

个人使用的python 编译器是pycharm community edition. 在工程中设置中,找到project interpreter, 在相应的工程下,找到package,然后选择 “+” 添加, 搜索 hbase-thrift (Python client for HBase Thrift interface),然后安装包。

安装服务器端thrift。

参考官网,同时也可以在本机上安装以终端使用。

thrift Getting Started

也可以参考安装方法 python 调用HBase 范例

首先,安装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版本可能有不同)

获取数据示例 1

# coding:utf-8

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
from hbase.ttypes import *

import csv


def client_conn():
 # Make socket
 transport = TSocket.TSocket('hostname,like:localhost', port)
 # Buffering is critical. Raw sockets are very slow
 transport = TTransport.TBufferedTransport(transport)
 # Wrap in a protocol
 protocol = TBinaryProtocol.TBinaryProtocol(transport)
 # Create a client to use the protocol encoder
 client = Hbase.Client(protocol)
 # Connect!
 transport.open()
 return client

if __name__ == "__main__":

 client = client_conn()

 # r = client.getRowWithColumns('table name', 'row name', ['column name'])
 # print(r[0].columns.get('column name')), type((r[0].columns.get('column name')))

 result = client.getRow("table name","row name")
 data_simple =[]

 # print result[0].columns.items()

 for k, v in result[0].columns.items(): #.keys()
  #data.append((k,v))
  # print type(k),type(v),v.value,,v.timestamp
  data_simple.append((v.timestamp, v.value))

 writer.writerows(data)
 csvfile.close()

 csvfile_simple = open("data_xy_simple.csv", "wb")
 writer_simple = csv.writer(csvfile_simple)
 writer_simple.writerow(["timestamp", "value"])
 writer_simple.writerows(data_simple)
 csvfile_simple.close()

 print "finished"

会基础的python应该知道result是个list,result[0].columns.items()是一个dict 的键值对。可以查询相关资料。或者通过输出变量,观察变量的值与类型。

说明:上面程序中 transport.open()进行链接,在执行完后,还需要断开transport.close()

目前只涉及到读数据,之后还会继续更新其他dbase操作。

以上这篇python操作 hbase 数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python练习程序批量修改文件名
Jan 16 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
详解python之简单主机批量管理工具
Jan 27 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
python读取各种文件数据方法解析
Dec 29 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
Django REST framework 视图和路由详解
Jul 19 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
Python实现仿射密码的思路详解
Apr 23 Python
Python 操作 MySQL数据库
Sep 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
深入理解NumPy简明教程---数组1
Dec 17 #Python
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
加强版phplib的DB类
2008/03/31 PHP
PHP面向对象分析设计的经验原则
2008/09/20 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
php中curl使用指南
2015/02/05 PHP
php常用图片处理类
2016/03/16 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Python+Django搭建自己的blog网站
2018/03/13 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
团员学习总结的自我评价范文
2013/10/14 职场文书
付款委托书范本
2014/04/04 职场文书
房产委托公证书样本
2014/04/04 职场文书
支部组织生活会方案
2014/06/10 职场文书
数学教研活动总结
2014/07/02 职场文书
园林技术专业求职信
2014/07/28 职场文书