Python之操作HBASE数据库

目前有两个库可以操作HBASE:hbase-thrift 和  happybase

happybase使用起来比较简单方便,因此重点学习该库,hbase-thrift只做简要介绍。

(一)hbase-thrift

1、使用前先添加库和依赖库:

pip install thrift
pip install hbase-thrift
pip install google-cloud
pip install google-cloud-vision
pip install kazoo

2、连接数据库的配置信息:

#先在Linux上启动HBASE server
#/opt/cloudera/parcels/CDH/lib/hbase/bin/hbase-daemon.sh --config /opt/cloudera/parcels/CDH/lib/hbase/conf foreground_start thrift --infoport 9096 -p 9091
#再运行该python脚本连接服务器from thrift.transport import TSocket
from hbase import Hbase
from hbase.ttypes import *host = "xxx.xxx.xxx.xxx"
port = 9091
framed = Falsesocket = TSocket.TSocket(host, port)
if framed:transport = TTransport.TFramedTransport(socket)
else:transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)

3、操作数据库

print ("Thrift2 Demo")
print ("This demo assumes you have a table called \"example\" with a column family called \"family1\"")#打开连接
transport.open()# 获取所有表名
tableNames = client.getTableNames()
print('tableNames:', tableNames)#关闭连接
transport.close()#################################################
# #结果为:
# Thrift2 Demo
# This demo assumes you have a table called "example" with a column family called "family1"
# tableNames: ['lrx_hbase_test', 'lrx_hbase_test2', 'lrx_hbase_test3', 'lrx_test']

 (二)happybase

# pip install thrift
# pip install happybase
# 先在Linux上启动HBASE server
# /opt/cloudera/parcels/CDH/lib/hbase/bin/hbase-daemon.sh --config /opt/cloudera/parcels/CDH/lib/hbase/conf foreground_start thrift --infoport 9096 -p 9091 &
# 再运行python脚本连接服务器
import happybase
from conf import setting
# 创建连接,通过参数size来设置连接池中连接的个数
connection = happybase.Connection(**setting.HBASE)
# 打开传输,无返回值
connection.open()
# 创建表,无返回值
# connection.create_table('lrx_test',
#                         {
#                             'data':dict()
#                         })
# 获取一个表对象,返回一个happybase.table.Table对象(返回二进制表名)
table0 = connection.table('lrx_test')
print('表对象为:')
print(table0) #<happybase.table.Table name=b'lrx_test'>
# 获取表实例,返回一个happybase.table.Table对象(返回表名)
table = happybase.Table('lrx_test',connection)
print('表实例为:')
print(table) #<happybase.table.Table name='lrx_test'>
# 插入数据,无返回值 ----在row1行,data:1列插入值value1
for i in range(5):table.put('row%s' %i,{'data:%s'%i:'%s' %i} )
table.put('row5',{'data:5':'value1'})# 获取单元格数据,返回一个list
content = table.cells('row1','data:1')
print (content) #[b'value1', b'value1']
# 获取计数器列的值,返回当前单元格的值
# content2 = table.counter_get('row2','data:2')
# print(content2) #0
# 获取一个扫描器,返回一个generator
scanner = table.scan()
for k,v in scanner:print(k,v)
###########################################
# #结果为:
# #b'row0' {b'data:0': b'0'}
# b'row1' {b'data:1': b'value1'}
# b'row2' {b'data:2': b'2'}
# b'row3' {b'data:3': b'3'}
# b'row4' {b'data:4': b'4'}print(scanner) #<generator object Table.scan at 0x000001E17CCDAF10>
# 获取一行数据,返回一个dict
info = table.row('row2')
info1={}
for k,v in info.items():info1[k.decode()]=v.decode()
print(info1)
#获取表名
table = connection.tables()
print(table)
# 关闭传输,无返回值
connection.close()

 

转载于:https://www.cnblogs.com/yanwuliu/p/10695892.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fla 走迷宫游戏 源码_迷宫新玩法,果断一试

迷宫&#xff0c;真的是谜一样的存在&#xff0c;大到几十岁的成年人&#xff0c;小到三岁小儿&#xff0c;都对其没有抵抗力。而迷宫君也是真给力&#xff0c;除了能给人带来愉悦感与成就感&#xff0c;还能同时锻炼专注力、空间感、思维力、视觉追踪等&#xff0c;是儿童感统…

电脑桌面老是弹出计算机,电脑桌面老是弹出游戏怎么解决

如果玩游戏时桌面始终自动弹出&#xff0c;该怎么办&#xff1f;在360游戏模式下玩就足够了如何解决游戏在计算机上弹出的问题&#xff1f; _1首先打开我们的计算机&#xff0c;在我们的计算机桌面上找到计算机管家&#xff0c;然后单击它。 2.输入后&#xff0c;单击屏幕右下方…

[jQuery] jQuery是通过哪个方法和Sizzle选择器结合的?

[jQuery] jQuery是通过哪个方法和Sizzle选择器结合的&#xff1f; 通过创建一个div元素&#xff0c;检测被传入的fn是否被当前浏览器支bai持 function assert( fn ) { var div document.createElement("div");//此处用try-catch的原因是&#xff1a;被传入的fn很有…

用OmniPeek快速定义的过滤器来抓网页提交信息

编写网络程序的人&#xff0c;经常要抓取HTTP操作过程的一些数据&#xff0c;常用的软件有HTTPSniffer、httpLook等软件&#xff0c;这些软件比常简单&#xff0c;这儿就不作介绍了。这里重点介绍一下用OmniPeek来抓取数据包。OmniPeek 是一款非常优秀的网管软件&#xff0c;功…

类的构造器-init和new

提到构造器&#xff0c;大家都会想到 __init__&#xff0c;那么__new__是什么&#xff1f;也是构造器。 init 构造器 都很熟悉了&#xff0c;直接上代码 class MyClass(object):def __init__(self):passdef m1(self):print(3)mc MyClass() mc.m1() # 3 是不是很简单 别…

c++ dll发消息到主窗口_PyQt5学习笔记(五)窗口图形绘制

PyQt5提供了绘制图形的API&#xff0c;支持绘制&#xff1a;文本各种图形&#xff08;直线&#xff0c;点&#xff0c;椭圆&#xff0c;弧&#xff0c;扇形&#xff0c;多边形等&#xff09;图像绘制图形需要一个类QPainter。基本的绘制过程&#xff1a;# 创建QPainter对象 pai…

[jQuery] 针对jQuery性能的优化方法有哪些?

[jQuery] 针对jQuery性能的优化方法有哪些&#xff1f; show slide animate 等频繁修改 dom 很耗性能&#xff0c;可采用 jquery.transit 插件等使用单个 id 或 class 选择器当然也是优化点咯&#xff0c;元素选择器是真的会卡每次调用 $() 其实都是生成一个超大的对象&#xf…

[转] SQL Server中的行列转换问题

原表结构序号性别部门工资1男部门a8002女部门b9003男部门a4004女部门d 14005男部门e12006男部门f5007女部门a 3008男部门d10009女部门d123010女部门b200011男部门c200012男部门b1200最终显示 部门名 人数 男 女 小于800元 从800至999 从1000元至1190元 大于12…

vue-cli@2的原理解析

作为一个菜鸟&#xff0c;我有一颗好奇的心&#xff0c;每当vue init 的时候&#xff0c;看到那流畅的进度和神奇的结果&#xff0c;心里都充满一窥其本质的期望…… 以下就是我不断的console&#xff0c;大致理出来的一个流程心得&#xff0c;纪录在此&#xff0c;以作备忘。 …

怎么用计算机直接截图,电脑截图快捷键怎么使用,电脑怎么快捷键截图

我们对电脑快捷键都不陌生&#xff0c;有快捷键的帮助&#xff0c;我们可以加快电脑操作速度。那不知道大家对电脑截图快捷键有了解吗&#xff1f;下面小编就跟大家分享下电脑截图快捷键的几种使用方法。1. 首先使用电脑自带的截图。我们只需要使用快捷键【PrtScn】即可。在需要…

c语言数组指定位置插入和删除_Apache POI在指定位置插入表格

接到的需求是在模板表格的指定位置再插入表格。比如在模板的${proTable}处插入表格。依赖的包org.apache.poi poi 3.15org.apache.poi poi-ooxml 3.15插入表格由于是在表格里的指定地方插入表格&#xff0c;所以要遍历表格的每个单元格&#xff0c;查找到要插入点的占位符。// …

[jQuery] jQuery与jQuery UI有啥区别?

[jQuery] jQuery与jQuery UI有啥区别&#xff1f; 1&#xff09;jQuery是一个js库&#xff0c;主要提供的功能是选择器、属性修改和事件绑定等 2&#xff09;jQuery UI则是在jQuery的基础上&#xff0c;利用jQuery的扩展性&#xff0c;设计的插件。提供了一些常用的界面元素&a…

学习URLRewriter.dll的使用

1.添加引用 2.配置webconfig webconfig1<?xml version"1.0" encoding"utf-8"?> 2<configuration> 3 4 <configSections> 5 <section name"RewriterConfig" type"URLRewriter.Config.RewriterConfigSerializer…

高斯消元

高斯消元 高斯消元可真是复杂啊。。。。。 高斯消元求解n元一次线性方程组的板子题&#xff1a; P3389 【模板】高斯消元法 举个栗子&#xff1a; 2x y - z 8 -3x - y 2z -11-2x y 2z -3先将它存到矩阵中&#xff1a;②①* (2/3) ③① 接着对①变…

uoni扫地机器人好用吗_扫地机器人好用吗?了解性能看这篇

扫地机器人这类智能家电已经逐渐渗透到大众家庭中,尽管大家对这一品类不再陌生,但对它的性能了解并不全面。况且,市场上扫地机器人产品多不胜数,可实际使用效果和宣称效果存在较大差异。因此建议大家在选购和使用产品时要关注以下几个方面:本文引用地址&#xff1a;http://www.…

[jQuery] jQuery和Zepto的区别?各自的使用场景?

[jQuery] jQuery和Zepto的区别&#xff1f;各自的使用场景&#xff1f; 创建$的方式不同。前者略微要大&#xff0c;后者略微小点。场景....emmmm个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

原子微型结构信息应用到局部图形信息存储的猜想

昨天想着看一些图形学方面的知识&#xff0c;在CSDN上看到说Gabor函数可以精确是被图形细微处。于是从网上找了下面这么一篇文章看看&#xff1a; 二、Gabor函数 Gabor变换属于加窗傅立叶变换&#xff0c;Gabor函数可以在频域不同尺度、不同方向上提取相关的特征。另外Gabor函数…

西北大学计算机科学排名,西北大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第151-200位(QS世界排名)...

2020年QS计算机科学与信息系统Computer Science and Information Systems专业世界排名公布&#xff0c;西北大学计算机科学与信息系统世界排名第151-200位&#xff0c;西北大学计算机科学与信息系统专业实力怎么样呢&#xff1f;下面美英港新留学介绍西北大学计算机科学与信息系…

Hadoop 集群的三种方式

1,Local(Standalone) Mode 单机模式 $ mkdir input$ cp etc/hadoop/*.xml input$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar grep input output dfs[a-z.]$ cat output/* 解析$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-ex…

apache phoenix 入门_实现Phoenix入门

快速入门Phoenix是一个开源的HBASE SQL层。Phoeinx可以用标准的JDBC API替代HBASE client API来创建表&#xff0c;插入和查询查询HBASE中的数据。Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势1. 二级索引支持(global index loc…