一、 背景介绍
目前爬虫系统和舆情系统的数据都存储在UDH大数据平台的HBase中,在程序开发过程中会需要使用Python程序访问HBase数据库,并操作其中的数据,本文重点讲述环境准备过程中的问题。
二、 安装Python
去Python官方网站(https://www.python.org)下载Python 2.7版本的压缩包,之后按照如下步骤进行解压并安装:
tar zxvf Python-2.7.10.tgz
cd Python-2.7.10
./configure --prefix=/usr --with-bz2
make && make install
三、 安装Thrift
去Apache的Thrift官网(http://thrift.apache.org)下载Thrift 0.9.2版本的压缩包,之后按照如下步骤进行解压并安装:
tar zxvf thrift-0.9.2.tar.gz
cd thrift-0.9.2
./configure
make && make install
四、 生成HBase的Thrift脚本
在已经安装了HBase服务的服务器中,已经自动安装了HBase的Thrift的脚本,路径为:/usr/lib/hbase/include/thrift 。
需要使用这个脚本生成基于Python语言的HBase的Thrift脚本,具体命令如下:
thrift --gen py hbase2.thrift
命令执行成功后会生成名为gen-py的目录,其中包含了python版本的HBase包。
主要文件介绍如下:
l Hbase.py 中定义了一些HbaseClient可以使用的方法
l ttypes.py中定义了HbaseClient传输的数据类型
将生成的HBase包放入项目代码或者放入Python环境的依赖包目录中即可调用。
五、 连接HBase
Python连接HBase时需要先加载Thrift和HBase的相关包,之后创建与HBase的连接并进行后续操作,具体代码如下:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from thrift.transport.TSocket import TSocket
from thrift.transport.TTransport import TBufferedTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
from hbase.ttypes import *
import pymongo
import hashlib
import time
from datetime import datetime
class HBaseOperator():
def __init__(self):
self.host = "ip_address"
self.port = 9090
self.transport = TBufferedTransport(TSocket(self.host, self.port))
self.transport.open()
self.protocol = TBinaryProtocol.TBinaryProtocol(self.transport)
self.client = Hbase.Client(self.protocol)
def __del__(self):
self.transport.close()
def getAllTablesInfo(self):
#get table info
listTables = self.client.getTableNames()
print "="*40
print "Show all tables information...."
for tableName in listTables:
print "TableName:" + tableName
print " "
listColumns = self.client.getColumnDescriptors(tableName)
print listColumns
print " "
listTableRegions = self.client.getTableRegions(tableName)
print listTableRegions
print "+"*40