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.gz1.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的服务器上先启动Thrift4.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动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例