溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎樣通過thrift方式連接hive

發(fā)布時間:2021-12-02 17:34:39 來源:億速云 閱讀:238 作者:柒染 欄目:互聯(lián)網(wǎng)科技

本篇文章給大家分享的是有關(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è)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI