2015-09-23 77 views
1

我已經在遠程服務器上安裝了以下必要的軟件包以通過python訪問配置單元。通過python從遠程服務器訪問配置單元

的Python 2.7.6, Python開發工具, pyhs2, SASL-0.1.3, 節儉0.9.1, PyHive-0.1.0

這裏是python腳本訪問蜂房。

#!/usr/bin/env python 
import pyhs2 as hive 
import getpass 
DEFAULT_DB = 'camp' 
DEFAULT_SERVER = '10.25.xx.xx' 
DEFAULT_PORT = 10000 
DEFAULT_DOMAIN = 'xxx.xxxxxx.com' 

# Get the username and password 
u = raw_input('Enter PAM username: ') 
s = getpass.getpass() 
# Build the Hive Connection 
connection = hive.connect(host=DEFAULT_SERVER, port=DEFAULT_PORT, authMechanism='LDAP', user=u + '@' + DEFAULT_DOMAIN, password=s) 
# Hive query statement 
statement = "select * from camp.test" 
cur = connection.cursor() 

# Runs a Hive query and returns the result as a list of list 
cur.execute(statement) 
df = cur.fetchall() 

這是我得到的輸出:

文件 「建立/ bdist.linux-x86_64的/蛋/ pyhs2/初始化 py」 爲,7號線,在連接 文件「建立/ bdist .linux-x86_64/egg/pyhs2/connections.py「,第46行,在init 文件」build/bdist.linux-x86_64/egg/pyhs2/cloudera/thrift_sasl.py「,第74行,在打開 文件「build/bdist.linux-x86_64/egg/pyhs2/cloudera/thrift_sasl.py」,第92行,在_recv_sasl_message中 「build/bdist.linux-x86_64/egg/thrift/transport/TTransp ort.py」,第58行,在readAll 文件 「建立/ bdist.linux-x86_64的/蛋/節儉/運輸/ TSocket.py」,線路118,在讀 thrift.transport.TTransport.TTransportException:TSocket讀0字節

執行該腳本後,在輸出中看不到任何錯誤,但是在屏幕上看不到任何查詢結果。我不確定它爲什麼不顯示任何查詢結果,Hive服務器IP,端口,用戶和密碼都是正確的。而且我還驗證了hive服務器和遠程服務器之間的連接,沒有連接問題。

如果您有任何建議或解決方案,請幫助。感謝您的幫助。

回答

0

嘗試使用此代碼:

import pyhs2 

with pyhs2.connect(host='localhost', 
        port=10000, 
        authMechanism="PLAIN", 
        user='root', 
        password='test', 
        database='default') as conn: 
    with conn.cursor() as cur: 
     #Show databases 
     print cur.getDatabases() 

     #Execute query 
     cur.execute("select * from table") 

     #Return column info from query 
     print cur.getSchema() 

     #Fetch table results 
     for i in cur.fetch(): 
      print i 
+0

Cloudera的裝箱率沒有發現錯誤,而在Python 3 – kten

+0

運行此代碼同樣在這裏! @Aman –

0

我已經成功地獲得通過訪問以下

from pyhive import presto 
DEFAULT_DB = 'XXXXX' 
DEFAULT_SERVER = 'server.name.blah' 
DEFAULT_PORT = 8000 

# Username 
u = "user" 

# Build the Hive Connection 
connection = presto.connect(host=DEFAULT_SERVER, port=DEFAULT_PORT, username=u) 

# Hive query statement 
statement = "select * from public.dudebro limit 5" 
cur = connection.cursor() 

# Runs a Hive query and returns the result as a list of list 
cur.execute(statement) 
df = cur.fetchall() 
print df 
+0

它嘗試只在執行語句連接?因爲它運行良好,直到cur.execute。然後給連接拒絕err – kten