如何在Python中运行Hive查询?
我在这个问题上卡了几个小时,进展得很慢。我有一个远程的Hadoop实例,里面运行着Hue服务器,我一直在用它执行Hive查询,这些查询都没问题。现在我想通过Python直接对Hive执行查询,但这就出现了问题。我尝试过用Python Hive Utils和pyhs2来运行代码。前者给我返回了:
thrift.Thrift.TApplicationException: Invalid method name: 'get_database'
而后者则一直超时。
我知道服务器使用的是0.10.0-cdh4.3.0版本,但我不知道怎么判断它是用的HiveServer还是HiveServer2。
所以,我的问题有三个:
- 我怎么知道正在使用哪个版本的HiveServer?
- 这在通过Python连接时重要吗?
- 我为什么无法连接?
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。