0 引子
最近需要在python服务端实现读取hive数据的功能,本以为会比较容易实现,结果因为需要同时支持在Linux(部署)和windowns(开发)上运行,稍微费了一番功夫查询和尝试。
1 支持hive的第三方包
在网上稍微搜索了一下,支持python连接到hive的第三方包有pyhive、pshs2、impala。
GitHub参考链接
pyhive => https://github.com/dropbox/PyHive
pyhs2 => https://github.com/BradRuderman/pyhs2
impala => https://github.com/cloudera/impyla
但是pyhs2的作者已经停止维护了,所以可以使用另外两种方式。
2 使用pyhive连接hive
pyhive的文档很详细,要注意的有两点:
- 安装的时候如果提示sasl安装失败,可以手动在UCI镜像站中下载。
- windowns系统上无法安装成功,各种依赖和协议的错误,查了很多issue未能解决。
官方提供四种连接方式,分别是DB-API
,DB-API (asynchronous)
,SQLAlchemy
,Passing session configuration
。文档很详细。
from pyhive import presto # or import hive
cursor = presto.connect(host='192.168.10.10',port=10000).cursor