首先是配置相关的环境及使用的库。sasl、thrift、thrift_sasl、pyhive。
其中sasl安装较为麻烦一点,在Linux下直接安装可能会出现sasl.h头文件丢失问题,原因是sasl的源码已经许久没有维护了,代码结构与现有的代码结构不一样,下面分别给出win及Linux下的安装方法。https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl
windows下:
1.下载sasl安装文件,进行离线安装sasl,下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#sasl,版本选择适合自己的即可。
2.安装:
pip install sasl-0.2.1-cp36-cp36m-win_amd64.whl
pip install thrift -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install thrift_sasl==0.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyhive -i https://pypi.tuna.tsinghua.edu.cn/simple
Linux下:
如果存在sasl.h头文件问题,可以通过pip安装libsasl2-dev包,再安装sasl
apt-get install libsasl2-dev
pip install sasl
pip install thrift
pip install thrift-sasl
pip install PyHive
注意不要漏装,否则报错。
直接 pip install impala 即可
下载好相关库后,我们直接上代码。
from impala.dbapi import connect from impala.util import as_pandas import pandas as pd from pyhive import hive class LinkHive(object): def __init__(self,host,port,database): self.host = host self.port = port # self.username = username # self.password = password self.database = database def __link(self): # 1、pyhive连接 self.conn = hive.Connection(host=self.host,port=self.port,database=self.database) #2、impla连接 # self.conn = connect(host=self.host, port=self.port, database=self.database) self.cur = self.conn.cursor() # CUSTOM LDAP def selectdata(self,sql): try: self.__link() except Exception as e: print('link error:') print(e) try: #c = self.cur.fetchall() pd.read_sql(sql,self.conn) //pihive读取数据 # self.cur.execute(sql) //impala读取数据 # result = as_pandas(self.cur) //impala读取数据后转为pandas的DataFrame except Exception as e: print('query error:') print(e) # 关闭连接 释放资源 self.cur.close() self.conn.close() return result
Lebanon Address 版权所有
Powered by WordPress