簡體   English   中英

如何使用pyhive訪問遠程配置單元

[英]How to access remote hive using 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)]

成功連接的其他要求是什么? 我可以直接連接到服務器(使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM