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 錯誤