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 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
python递归实现快速排序
Aug 18 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
python ---lambda匿名函数介绍
Mar 13 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Falsk 与 Django 过滤器的使用与区别详解
Jun 04 Python
python随机模块random的22种函数(小结)
May 15 Python
django orm模块中的 is_delete用法
May 20 Python
django实现日志按日期分割
May 21 Python
python 获取剪切板内容的两种方法
Nov 28 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
php生成shtml类用法实例
2014/12/09 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
php截取视频指定帧为图片
2016/05/16 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
python数据结构之链表详解
2017/09/12 Python
python实现flappy bird小游戏
2018/12/24 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
员工加薪申请报告
2015/05/15 职场文书
小学教师教学随笔
2015/08/14 职场文书
入党申请书怎么写?
2019/06/21 职场文书
Node.js实现断点续传
2021/06/23 Javascript
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
无线电知识基础入门篇
2022/02/18 无线电
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
python在package下继续嵌套一个package
2022/04/14 Python
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android