在大数据工作中经常碰到需要将hive查询数据导入到mysql的需求,常见的方法主要有两种,一是impala,另一种则是pyhive。
一、pyhive方式连接hive数据库
首先是配置相关的环境及使用的库。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
注意不要漏装,否则报错。
二、impala方式连接hive数据库
直接 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
热门文章
- 猫不打疫苗有事吗(猫不打疫苗有啥危害)
- 3月15日最新机场订阅 | 22.9M/S|2025年V2ray/Shadowrocket/Clash/SSR免费节点地址链接分享
- 制沙设备一套得多少钱(干粉砂浆设备干粉砂浆成套设备)
- 新疆和田宠物店在哪里开(新疆和田宠物店在哪里开门)
- 3月7日最新机场订阅 | 18.7M/S|2025年Shadowrocket/V2ray/SSR/Clash免费节点地址链接分享
- 3月10日最新机场订阅 | 21.2M/S|2025年Clash/V2ray/Shadowrocket/SSR免费节点地址链接分享
- 宠物狗批发市场在哪里(宠物狗批发基地)
- 农业大学动物医院预约挂号 农业大学动物医院门诊时间
- 20万左右的四座敞篷跑车有哪些品牌(20万左右的四座敞篷跑车有哪些车型)
- 国内生产宠物粮的上市公司 国内生产宠物粮的上市公司有哪些