Python连接Hive数仓
1、PyHive
PyHive通过与HiveServer2通讯来操作Hive数据。当hiveserver2服务启动后,会开启10000的端口,对外提供服务,此时PyHive客户端通过JDBC连接hiveserver2进行Hive SQL操作
安装PyHive模块:
pip install pyhive
前提条件:
1) 启动Hadoop集群
2) 使用
hiveserver2
开启Hive的JDBC服务
基本使用:
import pandas as pd
from pyhive import hive
# 连接Hive服务端
conn = hive.Connection(host='bd91', port=10000, database='default')
cursor = conn.cursor()# 执行HQL
cursor.execute("select * from stu")# 转换为Pandas DataFrame
columns =[col[0]for col in cursor.description]
result = cursor.fetchall()
df = pd.DataFrame(result, columns=columns)print(df.to_string())
2、Impala
Python连接Hive也可以使用Impala查询引擎。Impala和Hive的通信方式与PyHive不同,Impala通过Thrift和Hive Metastore服务端建立连接,获取元数据信息,进而与HDFS交互
Thrift是一个轻量级、跨语言的RPC框架,主要用于服务间的RPC通信。Thrift由Facebook于2007年开发,2008年进入Apache开源项目
SASL模块是Python中用于实现SASL(Simple Authentication and Security Layer)认证的第三方库,提供了对各种SASL机制的支持,例如与Kafka、Hadoop等进行安全通信
经过验证,以下模块都是Python连接Hive的环境依赖:
pip install bitarray
pip install bit_array
pip install thrift
pip install thriftpy
pip install pure_sasl
pip install --no-deps thrift-sasl==0.2.1
安装Impala模块:
pip install impyla
如果安装Impala报错:
ERROR: Failed building wheel for impyla
则需要下载对应的whl文件安装:
Python扩展包whl文件下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/
Ctrl+F
查找需要的whl文件,点击下载对应版本
安装:
pip install whl文件绝对路径
基本使用:
from impala.dbapi import connect
from impala.util import as_pandas
# 连接Hive
conn = connect(host='bd91', port=10000, auth_mechanism='PLAIN', user="root", password="123456", database="default")# 创建游标
cursor = conn.cursor()# 执行查询
cursor.execute("select * from stu")# 将结果转换为Pandas DataFrame
df = as_pandas(cursor)print(df.to_string())# 执行查询
cursor.execute("select * from hivecrud.s_log limit 3")# 结果转换为Pandas DataFrame
df = as_pandas(cursor)print(df.to_string())# 关闭连接
cursor.close()
conn.close()
结果如下:
版权归原作者 对许 所有, 如有侵权,请联系我们删除。