0


python读取hive数据库

在大数据工作中经常碰到需要将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 即可

下载好相关库后,我们直接上代码。

  1. from impala.dbapi import connect
  2. from impala.util import as_pandas
  3. import pandas as pd
  4. from pyhive import hive
  5. class LinkHive(object):
  6. def __init__(self,host,port,database):
  7. self.host = host
  8. self.port = port
  9. # self.username = username
  10. # self.password = password
  11. self.database = database
  12. def __link(self):
  13. # 1、pyhive连接
  14. self.conn = hive.Connection(host=self.host,port=self.port,database=self.database)
  15. #2、impla连接
  16. # self.conn = connect(host=self.host, port=self.port, database=self.database)
  17. self.cur = self.conn.cursor()
  18. # CUSTOM LDAP
  19. def selectdata(self,sql):
  20. try:
  21. self.__link()
  22. except Exception as e:
  23. print('link error:')
  24. print(e)
  25. try:
  26. #c = self.cur.fetchall()
  27. pd.read_sql(sql,self.conn) //pihive读取数据
  28. # self.cur.execute(sql) //impala读取数据
  29. # result = as_pandas(self.cur) //impala读取数据后转为pandas的DataFrame
  30. except Exception as e:
  31. print('query error:')
  32. print(e)
  33. # 关闭连接 释放资源
  34. self.cur.close()
  35. self.conn.close()
  36. return result

本文转载自: https://blog.csdn.net/qq_24173131/article/details/127799830
版权归原作者 rains0701 所有, 如有侵权,请联系我们删除。

“python读取hive数据库”的评论:

还没有评论