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的示例: