我无法通过我的python脚本连接到远程服务器上运行的配置单元 我正在使用相同的脚本(当然,使用不同的服务器详细信息)连接到我的localhost&上运行的配置单元。能够连接。
我从命令行使用命令在本地主机上启动服务器:
hive —service hiveserver2
启动服务器并运行python脚本
连接到在本地主机上运行的Hive的脚本:
import pyhs2
conn = pyhs2.connect(host='localhost', port=10000, authMechanism='PLAIN', user='hive', password ='', database='default')
with conn.cursor() as cur:
cur.execute("show databases")
for i in cur.fetch():
print i
使用上面的代码,我可以在本地主机上访问db @ Hive。
我正在使用下面的代码连接到远程服务器,这里我 不 在命令行上执行任何操作来启动远程服务器。
连接到远程服务器上运行的Hive的脚本:
conn = pyhs2.connect(host='<my remote server Ip>', port=<port no>, authMechanism='PLAIN', user='<usernameToConnectToRemoteServer>', password ="<remoteServerPassword>" database='default')
with conn.cursor() as cur:
cur.execute("show databases")
for i in cur.fetch():
print i
这会给我一条消息:
thrift.transport.TTransport.TTransportException:TSocket读取0个字节。
我试过google&amp;尽可能多地找到解决方案,但我看到的只是连接本地主机的示例。请帮我解决这个问题。
答案 0 :(得分:1)
尝试使用SSH连接远程计算机,然后连接到hive,如下所示 -
import paramiko
import traceback
def hive_query_executor():
dns_name = ''
conn_obj = paramiko.SSHClient()
conn_obj.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
conn_obj.connect(dns_name, username="hadoop",
key_filename='')# or password
Hive_query="select * from abc limit 10;"
query_execute_command = 'ihive -e "' + impala_query + '"'
std_in, std_out, std_err = conn_obj.exec_command(query_execute_command)
conn_obj.close()
except:
print "Error :" + str(traceback.format_exc())
exit(0)
hive_query_executor()