目前有两个库可以操作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

Python之操作HBASE数据库相关推荐

  1. Python应用实战系列-如何通过Python来操作Oracle数据库:cx_Oracle

    最近需要将一批数据从csv文件中迁移到Oracle数据库中,打算用Python来实现,趁着这个机会,写一篇博客学习总结一些如何使用Python来操作Oracle数据库. 1 安装与导入 Python操 ...

  2. linux python开发环境sql数据迁移到mysql_linux环境下python怎样操作mysql数据库

    展开全部 linux环境下python怎样操作mysql数据库呢?方法如下: 首先在Linux环境下安装mysql-python 1.下载mysql-python 打开终端: cd /usr/loca ...

  3. HBaseAPI——IDEA操作HBase数据库HBase与Hive的集成

    目录 一.IDEA操作HBase数据库 (一)添加依赖 (二)配置log4j (三)IDEA连接HBase并插入数据 1.代码实现 2.查看命名空间的表 (四)java操作HBase数据库--单元测试 ...

  4. SpringBoot 使用Phoenix操作HBase数据库教程

    SpringBoot 使用Phoenix操作HBase数据库教程 文章目录 添加 Phoenix 相关依赖 控制器实现Hbase数据库操作 好的html源码下载 文章目录 借助 Apache Phoe ...

  5. 【Python】Python 2 和 Python 3 操作 MySQL 数据库实现创建表、删除表、增删改查操作

    1.MySQL数据库和表的编码格式 (1)创建数据库并指定字符集 mysql> create database testpythondb character set utf8; Query OK ...

  6. Python 2 和 Python 3 操作 MySQL 数据库实现创建表、删除表、增删改查操作

    1.MySQL数据库和表的编码格式 (1)创建数据库并指定字符集 mysql> create database testpythondb character set utf8; Query OK ...

  7. python读写操作redis数据库

    python读写操作redis数据库 redis有16个逻辑数据库(编号db0到db15),每个逻辑数据库数据是隔离的,默认db0.选择第n个逻辑数据库,命令select n ,python连接时可指 ...

  8. python hbase_Python操作Hbase

    Python操作Hbase的增删改查操作 增改数据put, row操作 put(row, data, timestamp=None, wal=True)---> 插入数据,无返回值 row--- ...

  9. Python如何操作Access数据库及如何操作accdb文件

    目前来说,Access数据库的使用度相对较少,所以在使用Python操作Access数据库文件时,相应的文章和教程也较少.为了解决各位在类似场景下的难题,特意写文章如下: 1.安装模块pyodbc p ...

最新文章

  1. Laravel 中的 Many-To-Many
  2. Linux 系统 文件锁 fcntl函数详解
  3. MONO Jexus部署最佳体验
  4. 于谦一共收了几个徒弟,为什么?
  5. google控制台使用
  6. 拒绝充钱!教你一招避开网盘限速
  7. multisim安装完成后显示安装程序损坏的免费解决方案
  8. unicode 表情对照表
  9. (毕业设计资料)基于单片机51单片机智能药盒控制系统设计
  10. Android蓝牙通讯
  11. 十则:程序员“笑话”据说只有真正的程序员才看得懂
  12. uni-app 跳转至手机浏览器
  13. 10个常用的JS工具库
  14. SET NOCOUNT { ON | OFF }
  15. uniapp 即时通讯_uni-App 仿微信 App 即时通讯|vue+uniapp 聊天
  16. GeoGebra入门之一分钟制作光的反射动态仿真模拟课件
  17. 迷你WiFi摄像机需要多少兆的带宽才不会卡顿
  18. 帮我写一段dart代码,目的是将字符串里的windows、macos、linux系统中的文件名保留字符替换成中文全角字符。使最后返回的字符串可以用于windows、macos、linux的文件名...
  19. SharePoint designer 2013 中新的workflow action(操作)
  20. radan7破解版|radan7中文破解版|2018最新版

热门文章

  1. linux堡垒机开源软件,Jumpserver开源堡垒机
  2. cnpm与npm的区别
  3. slf4j的简单用法以及与log4j的区别
  4. Windows Sockets 错误码及出错原因
  5. 几个重要的RedHat Linux内核文件介绍 (1)
  6. C程序中如何获取shell命令执行结果和返回值
  7. [Redux/Mobx] Redux怎样设置初始状态?
  8. 前端学习(3310):redux的state hook对象
  9. React开发(102):别写立即执行函数
  10. [html] 你有使用过output标签吗?说说它的用途有哪些?