目前有两个库可以操作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 = False socket = 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()

Python之操作HBASE数据库的更多相关文章

  1. Python之操作redis数据库

    使用redis模块 一.操作redis 1.添加信息 (1)直接建key-value信息: 右键-Add New Key,手动添加key和value 右键-Console,打开控制台,写入命令 (2) ...

  2. python 之操作mysql 数据库实例

    对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...

  3. python 安装操作 MySQL 数据库.

    以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...

  4. Python之 操作 MySQL 数据库

    什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...

  5. python 连接操作 各类数据库

    转载自MySQL Loners 一,python 操作 MySQL:详情见:这里 #!/bin/env python # -*- encoding: utf-8 -*- #-------------- ...

  6. C#/Python/MATLAB操作PostgreSQL数据库

    PostgreSQL数据库是一个功能非常强大的开源数据库,支持多种SQL特性,非常好用.此外由于结合PostGIS可以实现空间数据库功能,故非常适合GIS领域的使用.本文旨在介绍C#.Python.M ...

  7. 使用Java API连接和操作HBase数据库

    创建的数据库存储如下数据 表结构 java代码 public class HbaseTest { /** * 配置ss */ static Configuration config = null; p ...

  8. Python之操作MySQL数据库

      一.操作步骤 1.导入pymysql模块 2.建立连接(ip.用户名.密码.数据库名.端口号.字符集.(自动提交参数)) 3.建立游标 4.执行sql语句 (4.需要提交的提交) 5.关闭游标 6 ...

  9. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

随机推荐

  1. Android上的Badge,快速实现给应用添加角标

    应用角标是iOS的一个特色,原生Android并不支持.或许是因为当时iOS的通知栏比较鸡肋(当然现在已经改进了很多),而Android的通知栏功能强大?所以才出现了一方依赖于数字角标,一方坚持强大的 ...

  2. Asp.Net Core WebApi中接入Swagger组件(初级)

    开发WebApi时通常需要为调用我们Api的客户端提供说明文档.Swagger便是为此而存在的,能够提供在线调用.调试的功能和API文档界面. 环境介绍:Asp.Net Core WebApi + S ...

  3. 一套代码小程序&Web&Native运行的探索04——数据更新

    接上文:一套代码小程序&Web&Native运行的探索03 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/m ...

  4. 使用 EOLINKER 进行接口测试的最佳路径 (下)

    本文为 <使用 EOLINKER 进行接口测试的最佳路径> 下半部分文章,主要介绍测试脚本如何执行和报告生成,以及测试项目人员如何协作.还没看过上篇文章请戳 使用 EOLINKER 进行接 ...

  5. 展开隐形的翅膀,WPR003N补完篇

    在上一回合要搞刷机!从它的尸体上踏过去!钢板云路由!WPR003N复活!成功启动OPENWRT中,笔者成功的让一个4年前主流芯片搭上OS的快船,留下一段佳话. 今天看着抽屉里的WPR003N,回忆它之 ...

  6. K2制作流程

    K2流程制作注意事项 1:分析需求 2:实施 步骤1:绘制流程图 步骤2:添加datafield[必备:ActJumped  IsPass] 步骤3:添加线规则(如下图所示,在添加完毕规则之后,再给同 ...

  7. 【转载】 Sqlserver中通过Select Into语句快速单表备份

    在Sqlserver数据库中,备份数据的方式有很多种,可以使用整个数据库备份,也可使用导出包含数据和架构的脚本文件的方式来进行单表或多表数据的备份,其实还有一种Select Into的方式可以快速备份 ...

  8. 杂牌机搞机之旅(二)————移植TWRP第三方Recovery并刷入

    原本想把杂牌机作为android破解和开发的测试机,破解的话肯定是安装框架的嘛,毕竟有些是要涉及到脱壳 . 但是,我尝试安装xposed的时候,手机卡在了开机界面,也就是magisk出现了错误,如果想 ...

  9. 解决IE6-IE7下li上下间距变大问题

    在IE6/7下li会向下产生大约2px的外边距 解决方法:li{vertical-align:top;}或者       li{vertical-align:bottom;} 解决问题!

  10. 05 入门 - 浅谈 ASP.NET MVC程序的工作原理

    目录索引:<ASP.NET MVC 5 高级编程>学习笔记 本篇内容 1. Global.asax文件 2. RouteConfig.cs文件 3. 视图命名和寻址的规则 前面创建了一个简 ...