- 一、目的
- 二、安装必要包
- 1.pycharm的安装方法
- 2.查询sasl安装位置
- 二、修改注册表
- 三、使用pandas读取测试
python采用pyhive或者impala包链接hive数据库,但是在windows环境下pyhive的方法是报错的,而在linux环境下pyhive方式比较简洁。在windows环境下一般推荐import impala包作为链接hive的方法,其缺点是设置也比较复杂,而且往往调试环境是windows而正式环境又是linux的话,切换代码也是一个问题。采用本方法可以在windows环境下直接安装pyhive,并调用包内方法,免去强制版本兼容限制。
二、安装必要包 1.pycharm的安装方法在pycharm中选择设置的页面:
点击加号安装 thrift ,thrift-sasl,sasl,PyHive
开始尝试连接hive
from pyhive import hive host='188.158.11.59' username='hdfs' password='hdfs%123' port=2181 data_base_name='test' conn = hive.Connection(host=host, port=port, auth="CUSTOM", database=data_base_name, username=username, password=password)
这个时候会报错
Could not start SASL: b'Error in sasl_client_start (-4) SASL(-4): no mechanism available: Unable to find a callback: 2'2.查询sasl安装位置
安装sasl后会在本机的相关位置存放sasl的dll文件,作者通过anaconda方式安装各种包,相应的sasl的dll库在envs的相关路径下,如下图:
记下这个文件夹位置:
D:ProgramDataAnaconda3envspyhaveconLibrarybinsasl2二、修改注册表
之所以pyhive无法链接hive库是因为,所引用的sasl无法初始化,在windows下,需要指定初始化时的dll库位置,运行regedit程序,打开注册表编辑。
创建一个注册表项:
HKEY_LOCAL_MACHINESOFTWARECarnegie MellonProject CyrusSASL Library
在这里新建一个字符串项SearchPath,内容填入前面记录的路径。如下图:
关闭注册表编辑器。
现在就可以使用pandas读取数据测试了。
from pyhive import hive import pandas as pd conn = hive.Connection(host='192.168.10.99', port=10000, auth="CUSTOM", database='test', username='hive', password='hive') sql_order = 'show tables' df = pd.read_sql(sql_order, conn) conn.close
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)