thriftpython安裝
⑴ 如何執行python第三方包windows exe格式
python第三方包的windows安裝文件exe格式, 這上面有很多python第三方包的二進制安裝文件,包括32位和64位的。下載安裝就ok了!
這下面有很多python第三方包的二進制安裝文件,包括32位和64位的。下載安裝就ok了!
包括了mysqldb,ldap等。
Index by date:
fiona
scikit-image
netcdf4
mercurial
scikits.audiolab
numba
llvmpy
python-igraph
rpy2
numpy
opencv
zope.interface
sfepy
quantlib
gdal
imread
django
psychopy
cx_freeze
msgpack
regex
cellcognition
vigra
scikit-learn
pytables
h5py
blender-mathutils
htseq
bioformats
simplejson
pyzmq
mako
simpleitk
qimage2ndarray
ujson
vlfd
libsvm
liblinear
cgkit
scipy
distribute
noise
theano
pyalembic
openimageio
pyaudio
pymca
pyamg
pgmagick
lxml
steps
sqlalchemy
cffi
biopython
python-ldap
pycurl
nipy
nibabel
pygments
mahotas
py-postgresql
pyamf
planar
holopy
pyvisa
jcc
polymode
polygon
cython
pyropes
llist
shapely
vtk
pymongo
libpython
meshpy
pandas
umysql
epydoc
coverage
cheetah
pyrxp
pybluez
pythonmagick
bsdiff4
pymssql
pymol
boost.python
orange
requests
pywcs
python-sundials
pymix
pyminuit
pylzma
pyicu
assimulo
basemap
pygraphviz
pyproj
mpi4py
spyder
pytz
pyfits
mysql-python
pygame
pycparser
twisted
pil
qutip
openexr
nipype
python-snappy
visvis
docutils
pyhdf
pyqwt
kivy
scikits.umfpack
psycopg
ets
guiqwt
veusz
pyqt
pyside
dpmix
py-fcm
scikits.hydroclimpy
smc.freeimage
scipy-stack
ipython
nose
mxbase
numexpr
pyyaml
ode
virtualenv
aspell_python
tornado
pywavelets
bottleneck
networkx
statsmodels
pylibdeconv
pyhook
lmfit
slycot
ndimage
scikits.scattpy
cvxopt
pymc
pysparse
scikits.odes
matplotlib
vpython
pycuda
pyopencl
pymvpa
pythonnet
cld
mod_wsgi
nltk
python-levenshtein
rtree
pywin32
scientificpython
sympy
thrift
pyopengl-accelerate
mdp
pyopengl
gmpy
reportlab
natgrid
scikits.vectorplot
pyreadline
milk
blosc
pycogent
pip
gevent
scons
carray
python-dateutil
jinja2
markupsafe
jsonlib
pysfml
fonttools
silvercity
console
python-cjson
pycluster
cdecimal
pytst
autopy
sendkeys
ceodbc
fipy
psutil
pyephem
pycifrw
blist
line_profiler
pydbg
bitarray
pyglet
python-lzo
faulthandler
delny
pyexiv2
ilastik
twainmole
scitools
pyspharm
casuarius
pyodbc
greenlet
nitime
pylibtiff
mmtk
pycairo
pysqlite
curses
videocapture
bazaar
nlopt
trfit
libsbml
oursql
sphinx
cellprofiler
py2exe
re2
liblas
cgal-python
pymedia
ffnet
pyfftw
libxml-python
pyfltk
pymex
pymatlab
zodb3
mmlib
pygtk
pyserial
babel
scikits.ann
scikits.delaunay
numeric
pulp
nmoldyn
pymutt
iocbio
jpype
wxpython
pybox2d
dipy
mmseg
pynifti
scikits.samplerate
scikits.timeseries
vitables
quickfix
⑵ python程序怎樣調用thrift服務
hrift伺服器通過傳輸層(TTransport)接收網路上傳輸過來的調用請求數據,然後將接收到的盯圓數據進行逆向的處理,例如傳輸層的實現類TFramedTransport就是將「數據長度+數據內容」形頌穗式的網路數據,轉成凱櫻塌只有數據內容的形式,然後再交付給Thrift伺服器的協議類(TProtocol)!
⑶ thrift不是一種rpc框架嗎,為什麼看到有人也用它做序列化
Apache Thrift 跨語言服務框架,本質RPC;我發service需要放候,遇跨語言調用問題,java語言發UserService用提供獲取用戶信息服務,服務消費端PHP/Python/C++等,我能所語言都適配相應調用式,候我奈使用Http作訪問協議;服務消費端能使用HTTP,且更加傾向於 操作本API式 使用服務,我需要Thrift提供支持.
本文UserService例,描述使用thrift式,及其原理..
. service.thrift
struct User{
1:i64 id,
2:string name,
3:i64 timestamp,
4:bool vip
}
service UserService{
User getById(1:i64 id)
}
二. API文遲首棚件
首先載安裝thrift客戶端,比windows平台,載thrift.exe,處需要提醒,同thrift客戶端版本API能兼容.本例使用thrift-0.9.0.exe;通"--gen"指定API所適配語言.本實例java客戶端API.
//windows平台,API文件芹手輸service目錄(目錄需要存)
> thrift.exe --gen java -o service service.thrift
三. UserService實現類
public class UserServiceImpl implements UserService.Iface {
@Override
public User getById(long id){
System.out.println("invoke...id:" + id);
return new User();//for test
}
}
四.原理簡析
1. User.java : thriftAPI能力非限,比struct能使用簡單數據類型(支持Date,Collection等),我能User看,類實現"Serializable"介面"TBase"介面.
其Serializable介面表明類實例需要序列化網路傳輸,干擾JAVA本身序列化反序列化機制,重寫readObjectwriteObject.thrift本身並沒幫助.
TBase介面thrift序列化反序列化使用,兩核:readwrite.述thrift文件,struct定義每碼則屬性都序號,比:1:id,thrift序列化,根據序號順序依屬性"名稱 + 值"寫入inputStream,反序列化.(具體參見readwrite實現).
thrift序列化反序列化實例數據,根據"屬性序號"進行,保證數據inputstreamoutputstream順序嚴格.點要求API發者,更改thrift文件struct定義,需要重新客戶端API,否則服務繼續使用(能報錯,能數據錯誤).thrift序列化/反序列化程JAVA自帶序列化機制同,攜帶額外class結構,外thrift種序列化機制更加適合網路傳輸,且性能更加高效.
2. UserService.Client: UserService,Client靜態類,類典型代理類,類已經實現UserService所.發者需要使用Client類API與Thrift server端交互,負責與Thrift serverSocket鏈接,發送請求接收響應.
⑷ python連接hive的時候必須要依賴sasl類庫嗎
客戶端連接Hive需要使用HiveServer2。HiveServer2是HiveServer的重寫版本,HiveServer不支持多個客戶端的並發請求。當前HiveServer2是基於Thrift RPC實現的。它被設計用於為像JDBC、ODBC這樣的開發API客戶端提供更好的支持。Hive 0.11版本引入的HiveServer2。
HiveServer2的啟動
啟動HiveServer2
HiveServer2的啟動十分簡便:
$ $HIVE_HOME/bin/hiveserver2
或者
$ $HIVE_HOME/bin/hive --service hiveserver2
默認情況下,HiverServer2的Thrift監聽埠是10000,其WEB UI埠是10002。可通過來查看HiveServer2的Web UI界面,這里顯示了Hive的一些基本信息。如果Web界面不能查看,則說明HiveServer2沒有成功運行。
使用beeline測試客戶端連接
HiveServer2成功運行後,我們可以使用Hive提供的客戶端工具beeline連接HiveServer2。
$ $HIVE_HOME/bin/beeline
beeline > !connect jdbc:hive2://localhost:10000
如果成功登錄將出現如下的命令提示符,此時可以編寫HQL語句。
0: jdbc:hive2://localhost:10000>
報錯:User: xxx is not allowed to impersonate anonymous
在beeline使用!connect連接HiveServer2時可能會出現如下錯誤信息:
12Caused by: org.apache.hadoop.ipc.RemoteException:User: xxx is not allowed to impersonate anonymous這里的xxx是我的操作系統用戶名稱。這個問題的解決方法是在hadoop的core-size.xml文件中添加xxx用戶代理配置:
123456789<spanclass="hljs-tag"><<spanclass="hljs-title">property><spanclass="hljs-tag"><<spanclass="hljs-title">name>hadoop.proxyuser.xxx.groups<spanclass="hljs-tag"></<spanclass="hljs-title">name><spanclass="hljs-tag"><<spanclass="hljs-title">value>*<spanclass="hljs-tag"></<spanclass="hljs-title">value><spanclass="hljs-tag"></<spanclass="hljs-title">property><spanclass="hljs-tag"><<spanclass="hljs-title">property><spanclass="hljs-tag"><<spanclass="hljs-title">name>hadoop.proxyuser.xxx.hosts<spanclass="hljs-tag"></<spanclass="hljs-title">name><spanclass="hljs-tag"><<spanclass="hljs-title">value>*<spanclass="hljs-tag"></<spanclass="hljs-title">value><spanclass="hljs-tag"></<spanclass="hljs-title">property></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>重啟HDFS後,再用beeline連接HiveServer2即可成功連接。
常用配置
HiveServer2的配置可以參考官方文檔《Setting Up HiveServer2》
這里列舉一些hive-site.xml的常用配置:
hive.server2.thrift.port:監聽的TCP埠號。默認為10000。
hive.server2.thrift.bind.host:TCP介面的綁定主機。
hive.server2.authentication:身份驗證方式。默認為NONE(使用 plain SASL),即不進行驗證檢查。可選項還有NOSASL, KERBEROS, LDAP, PAM and CUSTOM.
hive.server2.enable.doAs:是否以模擬身份執行查詢處理。默認為true。
Python客戶端連接HiveServer2
python中用於連接HiveServer2的客戶端有3個:pyhs2,pyhive,impyla。官網的示例採用的是pyhs2,但pyhs2的官網已聲明不再提供支持,建議使用impyla和pyhive。我們這里使用的是impyla。
impyla的安裝
impyla必須的依賴包括:
six
bit_array
thriftpy(python2.x則是thrift)
sasl
thrift_sasl
- fromimpala.dbapi import<span class="hljs-keyword">connectconn =<span class="hljs-keyword">connect(host=<span class="hljs-string">'127.0.0.1', port=<span class="hljs-number">10000, database=<span class="hljs-string">'default', auth_mechanism=<span class="hljs-string">'PLAIN')cur =conn.cursor()cur.execute(<span class="hljs-string">'SHOW DATABASES')<span class="hljs-keyword">print(cur.fetchall())cur.execute(<span class="hljs-string">'SHOW Tables')<span class="hljs-keyword">print(cur.fetchall())</span></span></span></span></span></span></span></span></span></span>
為了支持Hive還需要以下兩個包:
可在Python PI中下載impyla及其依賴包的源碼。
impyla示例
以下是使用impyla連接HiveServer2的示例:
1234567891011⑸ python可以把爬蟲的數據寫入hbase么
在已經安裝了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環境的依賴包目錄中即可調用。
⑹ 如何在windows下安裝openstack的依賴包
本文主要講述在windows系統中如何安裝openstack源代碼的依賴包,以便於在windows操作系統下進行源碼閱讀。為了可以在windows下閱讀openstack源碼,首先我們需要在windows系統下安裝python2.7。安裝好後將python目錄配置到系統的環境變數中(我的電腦->屬性->高級->環境變數)。可以在命令行輸入echo %PATH%觀察系統其值是否發生了變化。如果發生了變化可以繼續安裝pip。如果沒有包括python的路徑則需要注銷電腦,重新登陸或者重啟電腦。
為了完成pip的安裝,首先需要安裝setuptools,下載完成後解壓,然後使用命令行進入到解壓後的目錄,輸入pythonsetup.py install進行安裝。安裝完成後就可以下載pip進行安裝了,其安裝過程與setuptools一樣。在pip安裝完成後,需要修改Path環境變數,將python目錄下的Scripts添加進環境變數。然後參考上一段的做法激活環境變數後就可以使用pip方面地安裝擴展包了。
在完成上面的操作後就可以安裝openstack源代碼中所需要的擴展包的。其安裝命令主要是pip installrequirements.txt 或者pip install-r tools/requirements。至於執行哪個命令要根據openstack組件的源代碼結構而定。
下面主要說明安裝過程可能出現的問題。
1)distutils.errors.DistutilsError: Setup script exited with error:Unable to find vcvarsall.bat
注意:系統可能需要安裝vs2008,因為windows python以來vc++ 2008版本的。
2)UnicodeDecodeError:'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range
3)以下這些擴展包需要手動安裝或者下載安裝,不能使用pip安裝
A.pyOpenSSL
B.lxml
C.cffi
D.pycparser
E.thrift
F.mysql-python
⑺ python程序怎樣調用thrift服務
thrift服務在python中有自己的庫,導入這個庫,
然後用socket方式連接,
然後發送就可以了
下面是個例子
fromthrift.transportimportTTransport
fromthrift.transportimportTSocket
fromthrift.transportimportTSSLSocket
fromthrift.transportimportTHttpClient
fromthrift.protocolimportTBinaryProtocol
fromthrift.
host=「」
port=「」
ssl=「」
framed=「」#以上都是引入一些必要的包,還有聲明一些變數
classworkbench_client(object):
def__init__(self,host,port,ssl,framed):
socket=TSSLSocket.TSSLSocket(host,port,validate=False)ifsslelseTSocket.TSocket(host,port)
self.transport=TTransport.TFramedTransport(socket)
protocol=TCompactProtocol.TCompactProtocol(self.transport)
self.client=AntispamWorkbench.Client(protocol)
self.transport.open()
print"transport.open"#init是初始化了與thrift服務連接的情況
defmatchOrderEntry(self,orderId,passengerId,driverIdList,data):
cnt=self.client.matchOrderEntry(orderId,passengerId,driverIdList,data)
print"startmatchOrderEntry"
printcnt#這個函數是示例,如何調用thrift介面
⑻ windows下怎麼用python連接hive資料庫
由於版本的不同,Python 連接 Hive 的方式也就不一樣。
在網上搜索關鍵字 python hive 的時候可以找到一些解決方案。大部分是這樣的,首先把hive 根目錄下的$HIVE_HOME/lib/py拷貝到 python 的庫中,也就是 site-package 中,或者乾脆把新寫的 python 代碼和拷貝的 py 庫放在同一個目錄下,然後用這個目錄下提供的 thrift 介面調用。示例也是非常簡單的。類似這樣:
import sys
from hive_service import ThriftHive
from hive_service.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
def hiveExe(sql):
try:
transport = TSocket.TSocket('127.0.0.1', 10000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute(sql)
print "The return value is : "
print client.fetchAll()
print "............"
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message)
if __name__ == '__main__':
hiveExe("show tables")171819202122232425262728
或者是這樣的:
#!/usr/bin/env python
import sys
from hive import ThriftHive
from hive.ttypes import HiveServerException
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
try:
transport = TSocket.TSocket('14.18.154.188', 10000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute("CREATE TABLE r(a STRING, b INT, c DOUBLE)")
client.execute("LOAD TABLE LOCAL INPATH '/path' INTO TABLE r")
client.execute("SELECT * FROM test1")
while (1):
row = client.fetchOne()
if (row == None):
break
print rowve
client.execute("SELECT * FROM test1")
print client.fetchAll()
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message)
但是都解決不了問題,從 netstat 中查看可以發現 TCP 連接確實是建立了,但是不執行 hive 指令。也許就是版本的問題。
還是那句話,看各種中文博客不如看官方文檔。
項目中使用的 hive 版本是0.13,此時此刻官網的最新版本都到了1.2.1了。中間間隔了1.2.0、1.1.0、1.0.0、0.14.0。但是還是參考一下官網的方法試試吧。
首先看官網的 setting up hiveserver2
可以看到啟動 hiveserver2 可以配置最大最小線程數,綁定的 IP,綁定的埠,還可以設置認證方式。(之前一直不成功正式因為這個連接方式)然後還給了 python 示例代碼。
import pyhs2
with pyhs2.connect(host='localhost',
port=10000,
authMechanism="PLAIN",
user='root',
password='test',
database='default') as conn:
with conn.cursor() as cur:
#Show databases
print cur.getDatabases()
#Execute query
cur.execute("select * from table")
#Return column info from query
print cur.getSchema()
#Fetch table results
for i in cur.fetch():
print
在拿到這個代碼的時候,自以為是的把認證信息給去掉了。然後運行發現跟之前博客里介紹的方法結果一樣,建立了 TCP 連接,但是就是不執行,也不報錯。這是幾個意思?然後無意中嘗試了一下原封不動的使用上面的代碼。結果可以用。唉。。。
首先聲明一下,hive-site.xml中默認關於 hiveserver2的配置我一個都沒有修改,一直是默認配置啟動 hiveserver2。沒想到的是默認配置是有認證機制的。
然後再寫一點,在安裝 pyhs2的時候還是遇到了點問題,其實還是要看官方文檔的,我只是沒看官方文檔直接用 pip安裝導致了這個問題。安裝 pyhs2需要確定已經安裝了幾個依賴包。直接看在 github 上的 wiki 吧。哪個沒安裝就補上哪一個就好了。
To install pyhs2 on a clean CentOS 6.4 64-bit desktop....
(as root or with sudo)
get ez_setup.py from https://pypi.python.org/pypi/ez_setup
python ez_setup.py
easy_install pip
yum install gcc-c++
yum install cyrus-sasl-devel.x86_64
yum install python-devel.x86_64
pip install
寫了這么多,其實是在啰嗦自己遇到的問題。下面寫一下如何使用 python
連接 hive。
python 連接 hive 是基於 thrift 完成的。所以需要伺服器端和客戶端的配合才能使用。
在伺服器端需要啟動 hiveserver2 服務,啟動方法有兩種, 第二種方法只是對第一種方法的封裝。
1. $HIVE_HOME/bin/hive --server hiveserver2
2. $HIVE_HOME/bin/hiveserver21212
默認情況下就是hiveserver2監聽了10000埠。也可以通過修改 hive-site.xml 或者在啟動的時候添加參數來實現修改默認配置。
另外一方面,在客戶端需要安裝 python 的依賴包 pyhs2。安裝方法在上面也介紹了,基本上就是用 pip install pyhs2,如果安裝不成功,安裝上面提到的依賴包就可以了。
最後運行上面的示例代碼就可以了,配置好 IP 地址、埠、資料庫、表名稱就可以用了,默認情況下認證信息不需要修改。
另外補充一點 fetch 函數執行速度是比較慢的,會把所有的查詢結果返回來。可以看一下 pyhs2 的源碼,查看一下還有哪些函數可以用。下圖是 Curor 類的可以使用的函數。
一般 hive 表裡的數據比較多,還是一條一條的讀比較好,所以選擇是喲功能 fetchone函數來處理數據。fetchone函數如果讀取成功會返回列表,否則 None。可以把示例代碼修改一下,把 fetch修改為:
count = 0
while (1):
row = cur.fetchone()
if (row is not None):
count += 1
print count, row
else:
print "it's over"
⑼ python連接hive,怎麼安裝thrifthive
HiveServer2的啟動
啟動HiveServer2
HiveServer2的啟動十分簡便:
$ $HIVE_HOME/bin/hiveserver2
或者
$ $HIVE_HOME/bin/hive --service hiveserver2
默認情況下,HiverServer2的Thrift監聽埠是10000,其WEB UI埠是10002。可通過http://localhost:10002來查看HiveServer2的Web UI界面,這里顯示了Hive的一些基本信息。如果Web界面不能查看,則說明HiveServer2沒有成功運行。
使用beeline測試客戶端連接
HiveServer2成功運行後,我們可以使用Hive提供的客戶端工具beeline連接HiveServer2。
$ $HIVE_HOME/bin/beeline
beeline > !connect jdbc:hive2://localhost:10000
如果成功登錄將出現如下的命令提示符,此時可以編寫HQL語句。
0: jdbc:hive2://localhost:10000>
報錯:User: xxx is not allowed to impersonate anonymous
在beeline使用!connect連接HiveServer2時可能會出現如下錯誤信息:
Caused by: org.apache.hadoop.ipc.RemoteException:
User: xxx is not allowed to impersonate anonymous
這里的xxx是我的操作系統用戶名稱。這個問題的解決方法是在hadoop的core-size.xml文件中添加xxx用戶代理配置:
<property> <name>hadoop.proxyuser.xxx.groups</name> <value>*</value></property><property> <name>hadoop.proxyuser.xxx.hosts</name> <value>*</value></property>
重啟HDFS後,再用beeline連接HiveServer2即可成功連接。
常用配置
HiveServer2的配置可以參考官方文檔《Setting Up HiveServer2》
這里列舉一些hive-site.xml的常用配置:
hive.server2.thrift.port:監聽的TCP埠號。默認為10000。
hive.server2.thrift.bind.host:TCP介面的綁定主機。
hive.server2.authentication:身份驗證方式。默認為NONE(使用 plain SASL),即不進行驗證檢查。可選項還有NOSASL, KERBEROS, LDAP, PAM and CUSTOM.
hive.server2.enable.doAs:是否以模擬身份執行查詢處理。默認為true。
Python客戶端連接HiveServer2
python中用於連接HiveServer2的客戶端有3個:pyhs2,pyhive,impyla。官網的示例採用的是pyhs2,但pyhs2的官網已聲明不再提供支持,建議使用impyla和pyhive。我們這里使用的是impyla。
impyla的安裝
impyla必須的依賴包括:
six
bit_array
thriftpy(python2.x則是thrift)
sasl
thrift_sasl
- from impala.dbapi import connect
- conn = connect(host='127.0.0.1', port=10000, database='default', auth_mechanism='PLAIN')
- cur = conn.cursor()
- cur.execute('SHOW DATABASES')print(cur.fetchall())
- cur.execute('SHOW Tables')print(cur.fetchall())
為了支持Hive還需要以下兩個包:
可在Python PI中下載impyla及其依賴包的源碼。
impyla示例
以下是使用impyla連接HiveServer2的示例: