Impala分布式查询引擎的Python客户端
项目描述
impyla
HiveServer2实现(例如Impala,Hive)的Python客户端,用于分布式查询引擎。
有关更高级的Impala功能,包括分布式数据集的类似Pandas的接口,请参阅Ibis项目。
功能
-
HiveServer2兼容;与Impala和Hive兼容,包括嵌套数据
-
完全符合DB API 2.0 (PEP 249)的Python客户端(类似于sqlite或MySQL客户端),支持Python 2.6+和Python 3.3+。
-
支持Kerberos,LDAP,SSL
-
SQLAlchemy连接器
-
转换为pandas
DataFrame
,允许轻松集成到Python数据栈(包括scikit-learn和matplotlib);但请参阅Ibis项目以获得更丰富的体验
依赖关系
必需
-
Python 2.7+或3.5+
-
six
,bitarray
-
thrift==0.16.0
-
thrift_sasl==0.4.3
可选
-
kerberos>=1.3.0
以支持通过HTTP的Kerberos。这还要求在您的系统上安装Kerberos库 - 请参阅系统Kerberos -
pandas
用于转换为DataFrame
对象;但请参阅 Ibis 项目 -
sqlalchemy
用于 SQLAlchemy 引擎 -
pytest
用于运行测试;unittest2
用于在 Python 2.6 上进行测试
系统 Kerberos
不同的系统需要安装不同的软件包以启用 Impyla 中的 Kerberos 支持。以下是一些在不同发行版上安装软件包的示例。
Ubuntu
apt-get install libkrb5-dev krb5-user
RHEL/CentOS
yum install krb5-libs krb5-devel krb5-server krb5-workstation
安装
使用 pip
安装最新版本
pip install impyla
对于最新(开发)版本,直接从仓库安装
pip install git+https://github.com/cloudera/impyla.git
或克隆仓库
git clone https://github.com/cloudera/impyla.git
cd impyla
python setup.py install
运行测试
impyla 使用 pytest 工具链,并依赖于以下环境变量
export IMPYLA_TEST_HOST=your.impalad.com
export IMPYLA_TEST_PORT=21050
export IMPYLA_TEST_AUTH_MECH=NOSASL
要运行所有测试,请运行
cd path/to/impyla
py.test --connect impala
省略 --connect
选项以跳过 DB API 合规性测试。
使用方法
Impyla 实现了 Python DB API v2.0 (PEP 249) 数据库接口(请参阅它以获取 API 详细信息)
from impala.dbapi import connect
conn = connect(host='my.host.com', port=21050)
cursor = conn.cursor()
cursor.execute('SELECT * FROM mytable LIMIT 100')
print cursor.description # prints the result set's schema
results = cursor.fetchall()
Cursor
对象还公开了迭代器接口,它是缓冲的(由 cursor.arraysize
控制)
cursor.execute('SELECT * FROM mytable LIMIT 100')
for row in cursor:
print(row)
此外,Cursor
对象还会返回查询中返回的列信息。这对于将您的数据导出为 csv 文件很有用。
import csv
cursor.execute('SELECT * FROM mytable LIMIT 100')
columns = [datum[0] for datum in cursor.description]
targetfile = '/tmp/foo.csv'
with open(targetfile, 'w', newline='') as outcsv:
writer = csv.writer(outcsv, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL, lineterminator='\n')
writer.writerow(columns)
for row in cursor:
writer.writerow(row)
您还可以获取一个 pandas DataFrame 对象
from impala.util import as_pandas
df = as_pandas(cur)
# carry df through scikit-learn, for example
如何贡献代码?
在我们接受和重新分发您的贡献之前,您需要首先签署并返回一个 ICLA 和 CCLA。一旦提交这些文件,您就可以开始为 impyla 贡献了。请将这些提交到 CLA@cloudera.com。
查找
我们使用 Github issues 来跟踪这个项目的错误。找到一个您想工作的错误(或者如果您发现了一个新的错误,就提交一个!)如果没有人正在处理它,只有当您打算很快开始处理它时,才将其分配给自己。
在错误上讨论您打算采用的方法是个好主意。在您开始之前,如果已经得到了 impyla 社区的支持,那么您修补程序被审查和提交的可能性会更大。
修复
现在开始编码!当您编写补丁时,请记住以下几点
首先,请将测试与您的补丁一起包括在内。如果您的补丁添加了一个功能或修复了一个错误,但没有包括测试,通常不会接受。如果您不确定如何为特定组件编写测试,请在该问题上寻求指导。
其次,请将您的补丁严格针对问题中描述的问题。如果我们对每个补丁的范围保持纪律,那么对每个人来说都更好。一般来说,如果您在开发特定功能时发现了错误,请为该错误提交一个问题,检查您是否可以将其分配给自己,并独立于功能进行修复。这有助于我们区分错误修复和功能,并允许我们构建稳定的维护版本。
最后,请编写一个良好、清晰的提交信息,包括一个简短、描述性的标题和一个恰好足够长的信息,以说明问题是什么,以及如何修复它。
请使用您的补丁在 github 上创建一个 pull request。
项目详情
下载文件
下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
impyla-0.19.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 729b0067e90a20204d5fb9d11822214964e298dc8c11e4d142c11a367720ea4f |
|
MD5 | ca11e11cf8902d0e218ddeb0a24ded9d |
|
BLAKE2b-256 | d00842b154578aec1497d5c5462cbc1a840ea56c9626af9daa8c06ddf3246707 |
impyla-0.19.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 99ebfea347850072464568099ca3e481dd4dacaaca8a725bd64a288fc7e991d7 |
|
MD5 | 84bafcbff445b9141b07194f004a558a |
|
BLAKE2b-256 | 80e7243a9f336cce1120c629f4cde4fb60688be00f14774ad034fe2f10ca6f0d |