python2和python3使用pyhive

ModuleNotFoundError: No module named 'cloudera'

背景:
python3使用pyhs2连接hiveserver2

解决方法:

1、使用python2
2、python3 环境使用pyhive

1、python3 使用pyhive

sudo yum install cyrus-sasl-devel -y
sudo yum install gcc-c++  -y
pip3 install sasl
pip3 install thrift
pip3 install thrift-sasl
pip3 install pyhive

2、连接hive查询数据

# -*- coding: utf-8 -*-
from pyhive import hive

conn = hive.Connection(host='192.168.1.72', port=10000, username='root', database='testdalu',auth="CUSTOM")#host主机ip,port:端口号,username:用户名,database:使用的数据库名称,auth:使用账户密码连接。
cursor=conn.cursor()
cursor.execute('select * from t_t1')#执行查询
for result in cursor.fetchall():
     print(result)                      #将查询结果打印出来
conn.close()

3、问题记录

3.1、Password should be set if and only if in LDAP or CUSTOM mode;

配置auth="CUSTOM"

3.2、thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found

解决办法:

yum install cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi -y

3.3、ImportError: cannot import name TFrozenDict

python2 使用pyhive

yum install -y gcc libffi-devel python-devel openssl-devel gcc-c++ cyrus-sasl-plain  cyrus-sasl-devel  cyrus-sasl-gssapi

pip install pyhive[hive]

注意这里要加上[hive]后缀,否则有些关联的包装不上,会导致报错,我就遇到如下报错信息:

ImportError: cannot import name TFrozenDict 错误

原文地址:https://www.cnblogs.com/stone1989/p/12698389.html