[英]How to access remote hive using pyhive
使用此鏈接嘗試連接到遠程配置單元。 以下是使用的代碼。 收到的錯誤消息也在下面給出
碼
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)]
成功連接的其他要求是什么? 我可以直接連接到服務器(使用putty)並運行配置單元。 但是當從另一台服務器X嘗試時,我得到了這個錯誤。 我也可以從服務器X ping蜂房服務器。
端口號可能是問題嗎? 我如何檢查正確的端口號?
正如下面的答案中所討論的,我試圖啟動hiveserver2。 但命令似乎沒有用。 任何幫助都非常感謝。
當我從hive shell執行查詢時,我在日志中看到的端口是8088 。 想知道這應該是端口而不是10000 (兩者都不起作用)
無法使用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))"')
必須在遠程Hive主機中啟動HiveServer2
進程。 10000
是默認端口號。
使用此命令啟動HiveServer2。
$HIVE_HOME/bin/hiveserver2
請嘗試以下代碼使用pyhive訪問遠程配置單元表:
from pyhive import hive
import pandas as pd
#Create Hive connection
conn = hive.Connection(host="10.111.22.11", port=10000, username="user1")
# Read Hive table and Create pandas dataframe
df = pd.read_sql("SELECT * FROM db_Name.table_Name limit 10", conn)
print(df.head())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.