如何在Python中运行Hive查询?

3 投票
1 回答
3070 浏览
提问于 2025-04-18 01:38

我在这个问题上卡了几个小时,进展得很慢。我有一个远程的Hadoop实例,里面运行着Hue服务器,我一直在用它执行Hive查询,这些查询都没问题。现在我想通过Python直接对Hive执行查询,但这就出现了问题。我尝试过用Python Hive Utilspyhs2来运行代码。前者给我返回了:

thrift.Thrift.TApplicationException: Invalid method name: 'get_database'

而后者则一直超时。

我知道服务器使用的是0.10.0-cdh4.3.0版本,但我不知道怎么判断它是用的HiveServer还是HiveServer2。

所以,我的问题有三个:

  1. 我怎么知道正在使用哪个版本的HiveServer?
  2. 这在通过Python连接时重要吗?
  3. 我为什么无法连接?

1 个回答

2

你可以直接使用 ODBC。
在 Python 中:

import pyodbc
cnxn = pyodbc.connect("DSN=XXX",autocommit=True)
cursor = cnxn.cursor()
cursor.execute("select * from YYY")

这里的 XXX 是你之前创建的 DSN。
关于驱动程序,你可以去 这里查看。
在定义 DSN 时,你需要设置端口(默认是 10000)以及它是 HiveServer1 还是 HiveServer2。
要知道是 1 还是 2,你需要访问服务器,检查哪个进程在相关的端口上监听。你可以使用 netstat 命令来查看进程号和端口,使用 jps -m 命令可以查看进程号以及它是 HiveServer1 还是 HiveServer2。

撰写回答