2015-09-01 16 views
0

案例:我有一個cloudera平臺上的Hive。 Hive上有一個數據庫,我想從我的電腦上使用python客戶端訪問。我讀了類似的SO的問題,但它使用pyhs2,我無法安裝在遠程服務器上。而這個SO問題也使用Thrift,但我似乎無法安裝它。如何使用python客戶端訪問遠程服務器上的Hive

代碼:在執行下面的程序之後,當我執行下面的程序時,它給了我一個錯誤。

import pyodbc, sys, os 
    pyodbc.autocommit=True 
    con = pyodbc.connect("DSN=default",driver='SQLDriverConnect',autocommit=True) 
    cursor = con.cursor() 
    cursor.execute("select * from fb_mpsp") 

錯誤:SSH://[email protected]/home/ashish/anaconda/bin/python2.7 -u /家庭/阿希什/ PyCharm_proj/hdfsConnect /家庭/阿希什/ PyCharm_proj/hdfsConnect/Hive_connect/hive_connect的.py

回溯(最近通話最後一個): 文件 「/home/ashish/PyCharm_proj/hdfsConnect/home/ashish/PyCharm_proj/hdfsConnect/Hive_connect/hive_connect.py」,5號線,在 CON = pyodbc。 connect(「DSN = default」,driver ='SQLDriverConnect',autocommit = True)

pyodbc.Error :('IM002','[IM002] [unixODBC] [Driver Manager]數據源名稱未找到和指定默認驅動程序(0)(的SQLDriverConnect)')

進程退出代碼爲1

請建議結束我怎樣才能解決這個問題?此外,我不知道爲什麼當代碼將使用hadoop配置單元執行時,必須將驅動程序指定爲SQLDriverConnect?

感謝

回答

0

如果你決定重新審視pyhs2注意,它並不需要在遠程安裝在服務器上,它安裝在你的本地客戶上。

如果繼續使用pyodbc,則需要安裝Hive的ODBC驅動程序,您可以從Cloudera's site獲取該驅動程序。

您不需要在連接中指定驅動程序,它應該是您的DSN的一部分。創建DSN的具體細節取決於您的操作系統,但基本上可以使用管理工具 - >數據源(Windows)創建它,安裝ODBC並編輯/Library/ODBC/odbc.ini(Mac)或編輯/etc/odbc.ini(Linux)。

概念上,將DSN看作一個規範,它表示所有關於連接的信息 - 它將包含主機,端口和驅動程序信息。這樣在你的代碼中,你不必指定這些東西,你可以在不改變代碼的情況下切換數據庫的細節。

# Note only the DSN name specifies the connection 
import pyodbc 
conn = pyodbc.connect("DSN=Hive1") 
cursor = conn.cursor() 
cursor.execute("select * from YYY") 

或者,我更新了您引用的其他問題,並提供了有關如何安裝節儉庫的信息。如果你有這個選擇,我認爲這是一條路。

0

這爲我工作

​​

而現在一切工作正常。

一定什麼是細跟你DSN使用:

isql -v "Cloudera Hive DSN 64" 

和替換「Cloudera的蜂巢DSN 64」就在你的odbc.ini

而且所使用的名稱,目前我不能夠使用Kerberos身份驗證,除非我手工製作門票。 Impala可以使用Kerberos密鑰表文件平穩運行

任何有關如何使用keytab文件配置單元odbc的幫助,

0

試試這個方法也conenct從蜂巢服務器遠程獲取數據: 使用ssh連接遠程服務器,並給予CLI命令從遠程服務器訪問數據: ssh -o UserKnownHostsFile=/dev/null -o ConnectTimeout=90 -o StrictHostKeyChecking=no [email protected]_host 'hive -e "select * from DB.testtable limit 5;" >/home/shashanks/testfile'

相關問題