您的位置:首页 > 编程语言 > Python开发

python调用hbase

2016-07-19 20:38 666 查看

python调用hbase

HBase

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

Python访问HBase

Hbase有多种访问接口,python访问hbase是通过thrift gateway来实现的。

利用thrift序列化技术,支持C++,PHP,Python等多种语言,本质最终是编译成MapReduce Job来处理HBase表数据,适合做数据统计。

1.Thrift安装

thrift 是facebook开发并开源的一个二进制通讯中间件,通过thrift,我们可以充分利用各个语言的优势,编写高效的代码。

1.1. Thrift下载(用的是0.9.3版本)

下载地址:http://mirrors.hust.edu.cn/apache/thrift/0.9.3/thrift-0.9.3.tar.gz

1.2. Thrift安装

我是在ubuntu15.10版本上安装的Thrift,安装时候遇到两个问题在这也稍微描述一下,供参考。

a) 在执行【./configure】命令时候,编译出错,错误提示为:

no acceptable C compiler found in $PATH


解决方式:

安装gcc即可

sudo apt-get install gcc


b) 同样是在执行【./configure】命令时候出错,错误提示为:

No targets specified and no makefile found


解决方式:

第一. update最新版本系统软件

sudo apt-get update


第二. 编译缺失关联软件

sudo apt-get install gcc build-essential


编译执行完毕之后,再执行【./configure】 && 【make】&&【make install】命令就可以安装成功了。

注:ubuntu版本过低也会安装失败

2. Hbase源码包下载

Hbase版本为:1.1.5

下载地址:http://mirrors.cnnic.cn/apache/hbase/stable/hbase-1.1.5-src.tar.gz

3. 用Thrift生成python访问hbase的文件

解压下载来的【hbase-1.1.5-src.tar.gz】

执行生成python文件的命令:

Sudo thrift –gen py /home/Ubuntu/Downloads/hbase-1.1.5/hbase-thrift/src/main/r/thrift/Hbase.thrift




执行成功后会在当前目录下生成【gen-py】目录,其中包含了python版本的HBase包

gen-py目录的目录结构为:



主要文件介绍如下:

【Hbase.py】中定义了一些HbaseClient可以使用的方法

【ttypes.py】中定义了HbaseClient传输的数据类型

将生成的HBase包放入项目代码或者放入Python环境的依赖包目录中即可调用。

4. 连接HBase

在装有HBase的服务器上先启动Thrift

4.1.启动thrift服务

进入HBase安装目录:【/tools/hd/hbase/bin】



执行命令:

./hbase-daemon.sh start thrift


若不指定端口,则用默认端口:9090

4.2 编写客户端程序连接HBase

创建hbase表:

import Hbase
from ttypes import *
from thrift.transport import TSocket

from django.conf import settings

def client_conn():
transport = TSocket.TSocket(settings.HBASE_HOST_IP, settings.HBASE_HOST_PORT)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
return client

def get_all_tables():
client = client_conn()
table_names = client.getTableNames()
print table_names

if __name__=="__main__":
get_all_tables()


4.3 启动hbase的shell环境操作

进入到:/tools/hd/hbase/bin目录下:

执行:./hbase shell 命令

如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python hbase