先安装必要包
pip install six;
pip install bit_array;
pip install thrift;
#https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl 下载
wget sasl‑0.2.1‑cp27‑cp27m‑win_amd64.whl;
pip install sasl-0.2.1-cp27-cp27m-win_amd64.whl;
pip install thrift-sasl==0.2.1;
pip install pyhive;
from pyhive import hive
def get_connection():
# hive.Connection(host='10.0.1.18', port=10000, username='hdfs', database='aiops')
conn = hive.Connection(host='node2', port=10000, username='hdfs', database='tc_rc_fs')
return conn
def execute(sql, *args):
connection = get_connection()
cursor = connection.cursor()
# show variables like 'character_set_%'; 查看字符集
cursor.execute(sql)
fetchall = cursor.fetchall()
cursor.close()
connection.close()
return fetchall
def main(args):
databases = map(lambda x: x[0], getDatabases())
for database in databases:
print(database)
if __name__ == '__main__':
main(sys.argv[1:])
这个时候会报错
Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'
查询sasl安装位置
文件位置C:\Python27\Lib\site-packages\sasl\sasl2
修改注册表
之所以pyhive无法链接hive库是因为,所引用的sasl无法初始化,在windows下,需要指定初始化时的dll库位置,运行regedit程序,打开注册表编辑。
创建一个注册表项:
\HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library
在这里新建一个字符串项SearchPath,内容填入前面记录的路径。如下图: