Python连接 Impala — Impyla 安装文档

目录

  • 1. Linux下Impala安装
  • 2. Wins下Impala安装
    • 2.1 安装依赖包
    • 2.2 报错修改

Python 的安装请使用 Anaconda 进行安装,版本为 3.6.x,不要使用 3.7.x 版本,容易造成问题。关于 Anaconda 版本选择和安装请自行百度。

1. Linux下Impala安装

conda install impyla==0.14.1
conda install sasl==0.2.1
pip install thrift-sasl==0.2.1

测试代码:

conn = connect(host='*.*.*.*', port=21050, auth_mechanism='PLAIN',
			user='*.*.*.*', password='*.*.*.*')
cur = conn.cursor()
cur.execute("use test")
cur.execute("show tables")
print(as_pandas(cur))

最近 Centos 使用 conda 安装任何包,都会让你升级到 Python3.7,一旦升级了,包括基础的 conda 命令都没有了,下面提供 pip 安装的方式,其实就是使用下面 Windows 安装方式。

2. Wins下Impala安装

2.1 安装依赖包

  • bit_array
  • bitarray
  • thriftpy==0.3.9
  • pure-sasl
  • thrift-sasl==0.2.1
  • impyla==0.14.1

⚠️ 如果你使用的是 Python3,千万不要装 sasl==0.2.1 或者其他版本的 sasl 库,请使用以下命令进行安装

pip install six bit_array bitarray
pip install thriftpy==0.3.8 pure-sasl
pip install thrift-sasl==0.2.1 --no-deps
pip install impyla==0.14.1

2.2 报错修改

如果报错: can't concate head and body,修改 thrift-sasl.py 文件,在 94行之前添加:

D:\anaconda3\Lib\site-packages\thrift_sasl\__init__.py

def _send_message(self, status, body):
    header = struct.pack(">BI"҅ status, len(body))
    if (type(body) is str): # add
    	body = body.encode() # add
    self._trans.write(header + body)
    self._trans.flush()

测试代码:

conn = connect(host='*.*.*.*', port=21050, auth_mechanism='PLAIN',
			   user='*.*.*.*', password='*.*.*.*')
cur = conn.cursor()
cur.execute("use test")
cur.execute("show tables")
print(as_pandas(cur))

如果你安装的 thriftpy==0.3.9,请按照以下方式修改 site-packages\thriftpy\parser\parser.py:

定位到 488 行,将

if len(url_scheme) == '':

注释掉,并添加一行为:

if len(url_scheme) <= 1:

如果出现警告 WARNING: impala._thrift_api: Unable to 'sasl'. Fallback to 'puresasl',请修改 D:\anaconda3\Lib\site-packages\impala\_thrift_api.py 文件,注释掉 163 行。

你可能感兴趣的:(专题,Python包使用)