从Python连接Hive远程服务器

2024-09-28 21:56:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法通过python脚本连接到远程服务器上运行的配置单元。
我使用相同的脚本(当然,有不同的服务器详细信息)连接到运行在本地主机上的配置单元,并且能够连接。

我从命令行启动本地主机上的服务器,命令如下:

hive —service hiveserver2

启动服务器并运行python脚本

连接到本地主机上运行的配置单元的脚本:

^{pr2}$

使用以上代码,我能够访问本地主机上的db@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 read 0 bytes.

我已经尽我所能在google上找到解决方案,但是我看到的都是连接到本地主机的示例。请帮我解决这个问题。


Tags: 代码命令行命令服务器脚本远程portservice
1条回答
网友
1楼 · 发布于 2024-09-28 21:56:07

尝试对远程计算机执行SSH操作,然后连接到配置单元,如下所示-

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()

相关问题 更多 >