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

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  2. 使用Visual Studio Code开发.NET Core看这篇就够了

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9926078.html 在本文中,我将带着大家一步一步的通过图文的形式来演示如何在Visual Studi ...

  3. SmartSql 介绍

    介绍 SmartSql = MyBatis + Cache(Memory | Redis) + R/W Splitting +Dynamic Repository + Diagnostics .... ...

  4. leetcode 链表类型题目解题总结

    最基础的方式要做到非常熟练,要熟练到不思考就能写,但又需明白各处的要求和陷阱 合并两个有序链表的操作,在前面加上一个初始节点,注意while循环和退出时的处理,理解如何处理其中一个链表遍历完的情况 L ...

  5. C#复制文件全代码--供参考

    private void button1_Click(object sender, EventArgs e) { //创建文件对象 FileInfo fi = null; //实例化打开文件对话框 O ...

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

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

  7. MySQL 笔记整理(13) --为什么数据表删掉一半,表文件大小不变?

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 13) --为什么数据表删掉一半,表文件大小不变? 我们还是以MySQL ...

  8. HTML学习总结&基础篇

    何为坚持?一个“勤”,一个“忍”. 年前给自己定的目标,今年一定要坚持多逛园子,多看一些大佬的帖子,然后自己也尽量能够分享自己学习的收获,让自己进步快些,但是多逛园子是做到了,写博客这个东西,今年好像 ...

  9. spring aop中pointcut表达式完整版

    spring aop中pointcut表达式完整版 本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @with ...

  10. vue学习记录①(vue-cli脚手架构建项目结构)

    我们直接从vue的工程化开始入手. 在这里用git命令行搭建项目环境.(当然直接cmd命令行下也是一样的) git下载安装地址:https://www.git-scm.com/download/win ...