如何使用python pyhs2连接到配置单元? [英] How to connect to hive using python pyhs2?

查看:334
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆