中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python訪問Hbase(Thrift模塊安裝與測試)

發布時間:2020-06-08 23:39:41 來源:網絡 閱讀:20507 作者:shine_forever 欄目:關系型數據庫

hadoop環境介紹:

master服務:node1

slave服務器:node2,node3,node4

mysql服務器:node29

Thrift安裝在node1服務器上!


相關軟件版本:

hadoop版本:hadoop-0.20.2

sqoop版本:sqoop-1.2.0-CDH3B4

java版本:jdk1.7.0_67

mysql版本:5.1.65

Thrift版本:thrift-0.9.0

thrift安裝鏈接:http://thrift.apache.org/download/

python版本:2.7.3

ps:python2.5版本使用thrift有問題



一:測試前的準備工作

1)首先把mysql數據庫中數據加載到hbase中:

mysql數據如下:

利用python訪問Hbase(Thrift模塊安裝與測試)


將mysql的數據導入hbase的命令格式為:

sqoop import --connect jdbc:mysql://mysqlserver_IP/databaseName --username --password password --table datatable --hbase-create-table --hbase-table hbase_tablename --column-family col_fam_name --hbase-row-key key_col_name


說明:databaseName 和datatable 是mysql的數據庫和表名,hbase_tablename是要導成hbase的表名,key_col_name可以指定datatable中哪一列作 為hbase新表的rowkey,col_fam_name是除rowkey之外的所有列的列族名


2)在node1上加載mysql數據(node29)到hbase中:

sqoop import --connect jdbc:mysql://172.16.41.29/sqoop --username sqoop --password routon --table students --hbase-create-table --hbase-table students --column-family stuinfo --hbase-row-key id


在hbase中驗證是否加載成功:

利用python訪問Hbase(Thrift模塊安裝與測試)


二 Thrift軟件安裝

python版本:2.7.3


步驟為:

1) 安裝python2.7.3

說明:python2.7.3與thrift結合沒問題,python2.5版本好像不行!



生成的Hbase.py文件中的語法rhel5 自帶的python2.4 不支持

tar fvxj Python-2.7.3.tar.bz2

./configure --prefix=/usr/local/python2.7

make && make install

python2.7.3路徑為:

/usr/local/python2.7/bin/python

修改默認的python版本為2.7

把python2.7設置為環境變量,系統默認python版本為2.4

rm -rf /usr/bin/python

ln -s /usr/local/python2.7/bin/python /usr/bin/python


[root@node1 thrift-0.9.0]# python -V

Python 2.7.3

 


2)安裝thrift

tar fvxz thrift-0.9.0.tar.gz

cd thrift-0.9.0

./configure 

make && make install


thrift 0.9.0


Building C++ Library ......... : no

Building C (GLib) Library .... : yes

Building Java Library ........ : no

Building C# Library .......... : no

Building Python Library ...... : yes

Building Ruby Library ........ : no

Building Haskell Library ..... : no

Building Perl Library ........ : no

Building PHP Library ......... : no

Building Erlang Library ...... : no

Building Go Library .......... : no

Building D Library ........... : no


Python Library:

   Using Python .............. : /usr/bin/python


可以看到thrift支持很多語言,根據目前需求,支持python就可以了!


查看Thrift版本:

[root@node1 thrift-0.9.0]# thrift -version

Thrift version 0.9.0


3)讓thrift支持hbase

執行以下命令:

thrift --gen py /usr/local/hbase-0.90.5/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift


會在當前目前下創建一個目錄,目錄名稱為:

[hadoop@node1 ~]$ ll

total 7056

-rw-rw-r-- 1 hadoop hadoop    3045 Oct 14 13:55 access_log2.txt

-rw-r--r-- 1 hadoop hadoop 7118627 Feb  1  2012 access_log.txt

-rw-rw-r-- 1 hadoop hadoop    3500 Oct 22 10:17 derby.log

drwxrwxr-x 3 hadoop hadoop    4096 Oct 24 15:28 gen-py

-rw-rw-r-- 1 hadoop hadoop    3551 Oct 13 11:21 pig_1413170429087.log


gen-py目錄結構如下:

[hadoop@node1 ~]$ tree gen-py/

gen-py/

|-- __init__.py

`-- hbase

    |-- Hbase-remote

    |-- Hbase.py

    |-- __init__.py

    |-- constants.py

    `-- ttypes.py


1 directory, 6 files



4)把gen-py目錄復制到python相關目錄中:

cp -r gen-py/hbase/ /usr/local/python2.7/lib/python2.7/site-packages/.


5)讓python可以import thrift模塊:


 [root@node1 ~]# ln -s /usr/lib/python2.7/site-packages/thrift* /usr/local/python2.7/lib/python2.7/site-packages/.

[root@node1 ~]# ls -l /usr/local/python2.7/lib/python2.7/site-packages/

total 12

drwxr-xr-x 2 root root 4096 Oct 24 15:32 hbase

-rw-r--r-- 1 root root  119 Oct 24 11:30 README

lrwxrwxrwx 1 root root   39 Oct 24 15:50 thrift -> /usr/lib/python2.7/site-packages/thrift

lrwxrwxrwx 1 root root   60 Oct 24 15:50 thrift-0.9.0-py2.7.egg-info -> /usr/lib/python2.7/site-packages/thrift-0.9.0-py2.7.egg-info



6)啟動thrift服務:

hbase thrift -p 9090 start


7)在node1上編寫python腳本,查看hbase中有哪些表:

#! /usr/bin/env python
#coding=utf-8

import sys
#Hbase.thrift生成的py文件放在這里
sys.path.append('/usr/local/lib/python2.7/site-packages/hbase')
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
#如ColumnDescriptor 等在hbase.ttypes中定義
from hbase.ttypes import *
# Make socket
#此處可以修改地址和端口
transport = TSocket.TSocket('172.16.41.26', 9090)
# Buffering is critical. Raw sockets are very slow
# 還可以用TFramedTransport,也是高效傳輸方式
transport = TTransport.TBufferedTransport(transport)
# Wrap in a protocol
#傳輸協議和傳輸過程是分離的,可以支持多協議
protocol = TBinaryProtocol.TBinaryProtocol(transport)
#客戶端代表一個用戶
client = Hbase.Client(protocol)
#打開連接
transport.open()
#打印表名
print(client.getTableNames())


執行腳本:

利用python訪問Hbase(Thrift模塊安裝與測試)


到此,通過thrift插件,python就可以和hbase進行通信!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凯里市| 临汾市| 莲花县| 桑植县| 孟州市| 买车| 海南省| 台州市| 北票市| 元阳县| 育儿| 浦城县| 灵川县| 富蕴县| 南陵县| 蓬莱市| 宜都市| 名山县| 美姑县| 波密县| 旬阳县| 桑日县| 崇左市| 乐平市| 盘锦市| 中卫市| 南部县| 娄底市| 健康| 夹江县| 景德镇市| 九龙城区| 广河县| 莱西市| 库尔勒市| 福鼎市| 三原县| 海林市| 蓝山县| 西乡县| 沙田区|