如何使用pyhive访问远程配置单元

新手上路,请多包涵

使用此链接尝试连接到远程配置单元。下面是使用的代码。收到的错误消息也在下面给出

如何通过Python访问Hive?

代码

   from pyhive import hive
    conn = hive.Connection(host="10.111.22.11", port=10000, username="user1" ,database="default")

错误信息

Could not connect to any of [('10.111.22.11', 10000)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/anaconda3/lib/python3.6/site-packages/pyhive/hive.py", line 131, in __init__
    self._transport.open()
  File "/opt/anaconda3/lib/python3.6/site-packages/thrift_sasl/__init__.py", line 61, in open
    self._trans.open()
  File "/opt/anaconda3/lib/python3.6/site-packages/thrift/transport/TSocket.py",line 113, in open
    raise TTransportException(TTransportException.NOT_OPEN, msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('10.111.22.11', 10000)]

成功连接的其他要求是什么?我能够直接连接到服务器(使用腻子)并运行配置单元。但是当从另一台服务器 X 尝试时,我得到了这个错误。我也可以从服务器 X ping 蜂巢服务器。

端口号可能是问题所在吗?我如何检查正确的端口号?

正如下面的答案中所讨论的,我试图启动 hiveserver2。但该命令似乎不起作用。非常感谢任何帮助。

当我从配置单元 shell 执行查询时,我在日志中看到的端口也是 8088 。想知道这是否应该是端口而不是 10000 (两者都不起作用)

原文由 kten 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 647
2 个回答

无法使用 pyhive 使其工作。不得不使用 paramiko 下面是示例代码

import os
import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect('1.1.1.1', username='uid', password='pwd')
sshin, sshout, ssherr= ssh.exec_command('hive -e "create table test(key varchar(10),keyval varchar(200))"')

原文由 kten 发布,翻译遵循 CC BY-SA 3.0 许可协议

为了让 PyHive 工作,Hive Server 2.0 应该使用“二进制”传输模式运行。如果它作为 Http 以传输方式运行,则将其更改为“二进制”。

原文由 Arnab Biswas 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏