Python操作Hive数据仓库

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()

结果如下:

在这里插入图片描述


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值