日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python連接hive

系統(tǒng) 3079 0

前言

之前在讀hive數(shù)據(jù)的時(shí)候,經(jīng)常使用讀hdfs parquet文件的方法,雖然封裝函數(shù)一樣,調(diào)用起來(lái)也方便,但是總覺(jué)得不得勁,既然我需要的是hive數(shù)據(jù),為何不直接讀hive呢?剛好今天又遇到了這個(gè)問(wèn)題,就花了兩個(gè)小時(shí),研究了不同的方法,mark一下,以便查閱。好了,進(jìn)入正題,下面列出了兩種方法,但大體上差不多,可根據(jù)需要選擇。另外,還看到使用 impala 操作hive的方法,沒(méi)有詳細(xì)研究,有空再看看。

pyhive

在網(wǎng)上查了一下,使用比較多的是 pyhs2 和 pyhive,看了下pyhs2已經(jīng)好多年沒(méi)有更新了,轉(zhuǎn)而研究pyhive,操作步驟如下:

  1. conda?install sasl? ? ##網(wǎng)上很多資料都是使用pip安裝,但是大多會(huì)遇到下面的錯(cuò)誤信息,強(qiáng)烈建議使用conda安裝。這里提示一下,不僅僅是這個(gè)包,其他包遇到pip不能安裝的時(shí)候,也使用conda試試,因?yàn)閜ip有些包需要gcc編譯等,對(duì)環(huán)境要求比較高。
                    
                      ERROR: Command errored out with exit status 1: anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-_iihdxsa/sasl/setup.py'"'"'; __file__='"'"'/tmp/pip-install-_iihdxsa/sasl/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-kukgvvno/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
                    
                  
  2. pip install thrift-sasl
  3. pip install PyHive

測(cè)試程序如下:

            
              from pyhive import hive
import pandas as pd

cursor = hive.connect(host=IP,port=10000, auth="LDAP", database="default", username="test", password="test").cursor()
cursor.execute('select * from test_table')

data = cursor.fetchall()
columns = [col[0].split('.')[-1] for col in cursor.description]
data = pd.DataFrame(data=data, columns=columns)

print(data.shape)
            
          

因?yàn)槲业膆ive是采用LDAP認(rèn)證的,所以需要提供用戶名、密碼,如果不是這種方式,參考官方demo稍微改一下就可以了。另外,大家可能看到使用?hive.Connection 的方式連接hive的,其實(shí)這種方法和 hive.connect 一樣,看一下源碼就明白了,后者調(diào)用了前者。

pandas

采用pandas讀取hive是偶然間在網(wǎng)上看到的,測(cè)試后發(fā)現(xiàn)挺好用的,畢竟pandas好用。首先看一下自己是否有 SQLAlchemy 這個(gè)包,如果沒(méi)有執(zhí)行下面命令安裝:

pip install SQLAlchemy

測(cè)試程序如下:

            
              import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('hive://username:passwd@IP:10000/default?auth=LDAP')
data = pd.read_sql("SELECT * FROM test_table",con=engine)

print(data.shape)
            
          

上述程序同樣使用了LDAP認(rèn)證,pandas的源碼中同樣提供了使用demo,看一下就明白了。SQLAlchemy 的使用請(qǐng)看參考資料鏈接。

參考資料

https://docs.sqlalchemy.org/en/13/


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 朝阳县| 徐州市| 永善县| 保康县| 泸水县| 衡阳市| 巴林右旗| 伊金霍洛旗| 嵊泗县| 富宁县| 敦化市| 大兴区| 中超| 抚顺市| 新余市| 措勤县| 华坪县| 鄂州市| 阜宁县| 明星| 安岳县| 临清市| 桦川县| 商南县| 晋城| 普陀区| 云龙县| 彭泽县| 长岭县| 綦江县| 肃宁县| 阿拉尔市| 姜堰市| 汉川市| 神木县| 长葛市| 江达县| 文登市| 勐海县| 五台县| 鸡西市|