[解决方案]python在Windows环境下使用 pyhive链接hive大数据的最新方法

[解决方案]python在Windows环境下使用 pyhive链接hive大数据的最新方法

一、目的

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:\ProgramData\Anaconda3\envs\pyhavecon\Library\bin\sasl2

二、修改注册表

之所以pyhive无法链接hive库是因为,所引用的sasl无法初始化,在windows下,需要指定初始化时的dll库位置,运行regedit程序,打开注册表编辑。
创建一个注册表项:

\HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library

在这里新建一个字符串项SearchPath,内容填入前面记录的路径。如下图:
在这里插入图片描述
关闭注册表编辑器。

三、使用pandas读取测试

现在就可以使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值