您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)python怎樣通過thrift方式連接hive,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
hive安裝完成后,如果只是本地使用,啟用
nohup hive --service metastore & [hadoop@master1 usr]$ hive Logging initialized using configuration in file:/data/usr/hive/conf/hive-log4j.properties hive> use fmcm; OK Time taken: 0.874 seconds
如果是要腳本調(diào)用,則需要啟用HiveServer2,確保10000端口已經(jīng)被監(jiān)聽(可在hive-site.xml中修改端口)
nohup hive --service hiveserver2? & [hadoop@master1 usr]$ netstat -an|grep 10000 tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN
HiveServer2為客戶端在遠程執(zhí)行hive查詢提供了接口,通過Thrift RPC來實現(xiàn),還提供了多用戶并發(fā)和認證功能。目前python可以通過pyhs2這個模塊來連接HiveServer2,實現(xiàn)查詢和取回結(jié)果的操作。
不過pyhs2已經(jīng)不在維護,追新的可以參考另外2個很好的python package(已經(jīng)被證明pyhs2存在性能瓶頸,最好盡快切換到pyhive)
https://github.com/dropbox/PyHive
https://github.com/cloudera/impyla
安裝sasl失敗的話,先安裝: yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64
pyhs2的項目托管在github之上,地址為https://github.com/BradRuderman/pyhs2或在https://pypi.python.org/pypi/pyhs2/0.2直接下載
如果安裝不成功,可以嘗試先安裝以下的組件:
yum install cyrus-sasl-plain
yum install cyrus-sasl-devel
安裝時如果遇到報錯:
error: sasl/sasl.h: No such file or directory
可以嘗試先安裝sasl , ubantu可以用sudo apt-get install libsasl2-dev, CentOS可以使用anaconda的pip安裝, 或者按照以下步驟安裝:
curl -O -L ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz tar xzf cyrus-sasl-2.1.2.26.tar.gz cd cyrus-sasl-2.1.26.tar.gz ./configure && make install 最后附上測試代碼:
# -*- coding:utf-8 -*- ''' 采用Hive和thrift方式連接數(shù)據(jù)庫 ''' import pyhs2 import sys reload(sys) sys.setdefaultencoding('utf8') class HiveClient: def __init__(self, db_host, user, password, database, port=10000, authMechanism="PLAIN"): self.conn = pyhs2.connect(host=db_host, port=port, authMechanism=authMechanism, user=user, password=password, database=database, ) def query(self, sql): with self.conn.cursor() as cursor: cursor.execute(sql) return cursor.fetch() def close(self): self.conn.close() def main(): """ main process @rtype: @return: @note: """ hive_client = HiveClient(db_host='10.24.33.3', port=10000, user='hadoop', password='hadoop', database='fmcm', authMechanism='PLAIN') result = hive_client.query('select * from fm_news_newsaction limit 10') print result hive_client.close() if __name__ == '__main__': main()
以上就是python怎樣通過thrift方式連接hive,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。