如何使用python pyhs2连接到配置单元? [英] How to connect to hive using python pyhs2?
问题描述
我尝试使用 pyhs2
访问配置单元。我尝试了下面的代码:
example.py
import pyhs2
conn = pyhs2.connect(host ='localhost',port = 10000,authMechanism = None,user = None,password = None,database ='default')
with conn.cursor()as :
cur.execute(select * from table)
for i in cur.fetch():
print i
我得到以下错误:
Traceback(最近的调用最后):
在< module>文件中的example.py,第2行, conn = pyhs2.connect(host ='localhost',port = 10000,authMechanism = None,user = None,password = None,database ='default')
文件build / bdist.linux-x86_64 / egg / pyhs2 / __ init__.py,第7行,连接
文件build / bdist.linux-x86_64 / egg / pyhs2 / connections.py,第46行,在__init__
文件build / bdist。 linux-x86_64 / egg / pyhs2 / cloudera / thrift_sasl.py,第55行,打开
文件build / bdist.linux-x86_64 / egg / thrift / transport / TSocket.py,第101行,打开
thrift.transport.TTransport.TTransportException:无法连接到localhost:10000
我是当我尝试使用配置单元实用程序时得到确切的错误。我检查了sasl安装。我是否需要对配置单元中的hive-site.xml进行任何更改?如果是,我需要在哪里创建它?我错过了什么?
<1>找出本地主机的IP地址(在Linux上):
主机名-I
2-将localhost更改为实际ip
我还建议您仔细检查Hive所在的主机。如果您在Ambari上使用hortonworks,请转至 Hive
,然后 Configs
,并在那里检查主机。
修改(增加另一个建议):您的用户名和密码最有可能不是无
。要获取用户名和密码,请检查 hive-site.xml
并查看中的值javax.jdo.option.ConnectionUserName
和 javax.jdo.option.ConnectionPassword
。如果找不到任何东西,请尝试使用空字符串作为密码(而不是无),并将 hive
或空字符串作为用户名,即逐个尝试:
$ b
conn = pyhs2.connect(host ='localhost',port = 10000,authMechanism ='PLAIN',user ='hive',password ='',database ='default')
conn = pyhs2.connect(host ='localhost', port = 10000,authMechanism ='PLAIN',user ='',password ='',database ='default')
我还将 authMechanism
更改为PLAIN
I am trying to access hive using pyhs2
. I tried the following code:
example.py
import pyhs2
conn = pyhs2.connect(host='localhost', port=10000,authMechanism=None, user=None, password=None,database='default')
with conn.cursor() as cur:
cur.execute("select * from table")
for i in cur.fetch():
print i
I am getting the following error:
Traceback (most recent call last):
File "example.py", line 2, in <module> conn = pyhs2.connect(host='localhost', port=10000,authMechanism=None, user=None, password=None,database='default')
File "build/bdist.linux-x86_64/egg/pyhs2/__init__.py", line 7, in connect
File "build/bdist.linux-x86_64/egg/pyhs2/connections.py", line 46, in __init__
File "build/bdist.linux-x86_64/egg/pyhs2/cloudera/thrift_sasl.py", line 55, in open
File "build/bdist.linux-x86_64/egg/thrift/transport/TSocket.py", line 101, in open
thrift.transport.TTransport.TTransportException: Could not connect to localhost:10000
I am getting the exact error when I try with hive utils. I have checked sasl installation. Do I need to make any changes to the hive-site.xml in hive? If yes where do I need to create it? Am I missing out something?
1- Figure out the IP address of the localhost using (on Linux):
hostname -I
2- Change localhost to the actual ip
I would also suggest that you double check which host Hive is on. If you are using hortonworks, on Ambari, go to Hive
, then Configs
and check the host there.
Edit (adding another suggestion):
Your username and password most likely aren't None
. To get your username and password, check hive-site.xml
and look at the values in javax.jdo.option.ConnectionUserName
and javax.jdo.option.ConnectionPassword
. If you can't find anything, try an empty string as the password (as opposed to None), and hive
or empty string as the username i.e. try these one by one:
conn = pyhs2.connect(host='localhost', port=10000,authMechanism='PLAIN', user='hive', password='',database='default')
conn = pyhs2.connect(host='localhost', port=10000,authMechanism='PLAIN', user='', password='',database='default')
Note that I also changed authMechanism
to "PLAIN"
这篇关于如何使用python pyhs2连接到配置单元?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!