Win10平台 Python3 使用impyla连接Hive

文章目录

  • Win10平台 Python3 使用impyla连接Hive
    • (一)impyla等系列包安装;包安装顺序
    • (二)包安装后连接Hive,修改报错内容
    • (三)连接Hive 取数的python脚本

Win10平台 Python3 使用impyla连接Hive

安装impyla等系列包,使用python语言连接Hive。

(一)impyla等系列包安装;包安装顺序

  1. 安装 pure-sasl 包(本人安装时是 0.6.2版本的)
pip install pure-sasl

在这里插入图片描述

  1. 安装 thrift_sasl 包(参考其他博主,直接安装 thrift_sasl==0.2.1 --no-deps)
pip install thrift_sasl==0.2.1 --no-deps

在这里插入图片描述

  1. 安装 thrift 包(参考其他博主,直接安装 thrift==0.9.3)
pip install thrift==0.9.3

在这里插入图片描述

  1. 安装 impyla 包 (根据本人经验,需要使用国内镜像,不会镜像会安装得很慢,然后报超时错误,
    这里使用清华镜像)
pip install impyla -i https://pypi.tuna.tsinghua.edu.cn/simple

Win10平台 Python3 使用impyla连接Hive_第1张图片

  1. 安装 thriftpy 包 (参考其他博主说只需要安装上面4个包即可,但本人安装了上面4个包后连接Hive时,提醒 No module named ‘thriftpy’,于是又安装了thriftpy包;需要使用国内镜像,这里使用清华镜像)
pip install thriftpy -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

(二)包安装后连接Hive,修改报错内容

按照上面的顺序和版本安装5个包后,连接数仓时只报一个错,解决完后就可以成功连接Hive了!

报错内容:TypeError:cant’t concat str to bytes
Win10平台 Python3 使用impyla连接Hive_第2张图片
修改方法:根据报错前面的提示:“D:\0cxr\ProgramData\Anaconda3\lib\site-packages\thrift_sasl_init_.py”, line 94 ; 找到文件内容做修改。

将此部分

...
header = struct.pack(">BI", status, len(body))
self._trans.write(header + body)
...

修改为

header = struct.pack(">BI", status, len(body))
if(type(body) is str):
	body = body.encode() 
self._trans.write(header + body)

然后连接Hive就可以成功啦!

(三)连接Hive 取数的python脚本

import pandas as pd  
from impala.dbapi import connect
from impala.util import as_pandas

def link_hive(selector):
    """ 定义连接数据库函数;连接hive数据库,取数据"""
    conn = connect(host='hive地址',port=端口,database='取数的数据库',auth_mechanism='PLAIN')
    cursor = conn.cursor() 
    cursor.execute(selector)
    df = pd.read_sql(selector,conn)
    cursor.close() 
    conn.close()
    return df

PS,国内镜像地址:
http://pypi.douban.com/simple/   豆瓣

http://mirrors.aliyun.com/pypi/simple/   阿里

http://pypi.hustunique.com/simple/   华中理工大学

http://pypi.sdutlinux.org/simple/   山东理工大学

http://pypi.mirrors.ustc.edu.cn/simple/   中国科学技术大学

https://pypi.tuna.tsinghua.edu.cn/simple   清华

你可能感兴趣的:(python,hive,python,hive)