A Python example for HiveServer2


要做一個通過調用python來實現對hive server2 的連接。在網上搜索了很多資料,有些說的hive sever的,但是由於認證方式發生改變,行不通。

 

最后,找到了權威的說明(PS: 還是應該先看官方材料):

https://cwiki.apache.org/confluence/display/Hive/Setting+up+HiveServer2#SettingUpHiveServer2-PythonClientDriver 

 

所以在這里結合自己的使用,主要還是給大家翻譯和引用一下:

A Python client driver for HiveServer2 is available at https://github.com/BradRuderman/pyhs2 (thanks, Brad). It includes all the required packages such as SASL and Thrift wrappers.

The driver has been certified for use with Python 2.6 and newer.

To use the pyhs2 driver:

pip install pyhs2

通過Python 連接HiveServer2的類可以從github上下載,下載地址:https://github.com/BradRuderman/pyhs2 。其中包含了pyhs2類中使用到的其他的類,比如SASL 和Thrift wrappers。可以手動下載后放在目錄下,添加到sys.path中。

 

隨后給出來一個simple example:

 1 import pyhs2 
 2 with pyhs2.connect(host='localhost',
 3                    port=10000,
 4                    authMechanism="PLAIN",
 5                    user='root',
 6                    password='test',
 7                    database='default') as conn:
 8     with conn.cursor() as cur:
 9         #Show databases
10         print cur.getDatabases()
11         #Execute query
12         cur.execute("select * from table")
13         #Return column info from query
14         print cur.getSchema()
15                                                     
16         #Fetch table results        
17         for i in cur.fetch():
18             print i

 

調試的過程中基本沒有遇到什么大問題:

  1. 因以前的sys.path路徑下有老的pyhs2的類庫,會提示說缺少sasl的類庫,將舊的pyhs2打包備份后,會自動指向新的pyhs2的類庫,這個問題就解決了。

  2. 拋出異常的地方,我使用 try... except Thrift.TException, tx:的方式,能正常地拋出sql的異常。

 

如果有疑問,歡迎回復討論。

 

最后提供了一個郵件列表,供技術討論:

 You can discuss this driver on the user@hive.apache.org mailing list.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM