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 错误