Python連線hive資料庫小結

2021-10-23 21:51:20 字數 2345 閱讀 2820

做大資料分析及應用過程中,時常需要面對海量的資料儲存及計算,傳統的伺服器已經很難再滿足一些運算需求,基於hadoop/spark的大資料處理平台得到廣泛的應用。本文介紹用python讀取hive資料庫的方式,其中還是存在一些坑,這裡我也把自己遇到的進行分享交流。

集團有20臺伺服器(其中1臺採集主節點,1台大資料監控平台,1臺集群主節點,17臺集群節點),65thdfs的磁碟資源,3.5t的yarn記憶體,等等。專案目前需要對集團的家庭畫像資料分析,通過其樓盤,收視節目偏好,家庭收入等資料進行區域性的分析;同時對節目畫像及樓盤詳細資料進行判斷分析。本人習慣使用r語言和python來分析,故採用了本次分享的資料獲取部分的想法。

首先是配置相關的環境及使用的庫。sasl、thrift、thrift_sasl、pyhive。

pip install sasl-0.2.1-cp36-cp36m-win_amd64.whl

pip install thrift -i

pip install thrift_sasl==0.3.0 -i

pip install pyhive -i

from pyhive import hive

import pandas as pd

# 讀取資料

def select_pyhive(sql):

# 建立hive連線

conn = hive.connection(host='10.16.15.2', port=10000, username='hive', database='user')

cur = conn.cursor()

try:

#c = cur.fetchall()

df = pd.read_sql(sql, conn)

return df

finally:

if conn:

conn.close()

sql = "select * from user_huaxiang_wide_table"

df = select_pyhive(sql)

獲取到hive資料庫中約193w的家庭畫像資料,37個字段。   

可以看出**並不是很複雜,但是大家在測試時可能會出現以下兩種常見的問題。

解決一:

pip install thrift_sasl==0.3.0 -i ,更新依賴thrift_sasl包到0.3.0即可

impala方式連線hive資料庫,但是資料量過大會導致python卡死,目前還未找到合適方式解決。

首先是配置相關的環境及使用的庫。sasl、thrift、thrift_sasl、impala。

pip install sasl-0.2.1-cp36-cp36m-win_amd64.whl

pip install thrift -i

pip install thrift_sasl==0.2.0 -i

pip install impala -i

pip install thriftpy -i

from impala.dbapi import connect

from impala.util import as_pandas

import pandas as pd

# 獲取資料

def select_hive(sql):

# 建立hive連線

conn = connect(host='10.16.15.2', port=10000, auth_mechanism='plain',user='hive', password='user@123', database='user')

cur = conn.cursor()

try:

#cur.execute(sql)

c = cur.fetchall()

df = as_pandas(cur)

return df

finally:

if conn:

conn.close()

data = select_hive(sql = 'select * from user_huaxiang_wide_table limit 100')

這個impala方式也是很方便,但是當資料量到達一定程度,則就會在fetchall處一直處於執行狀態,幾個小時也沒有響應。

HIVE倉庫擴充套件 連線hive資料庫

一 命令列客戶端工具 hivecli cli是和hive互動的最簡單 最常用方式,你只需要在乙個具備完整hive環境下的shell終端中鍵入hive即可啟動服務。beeline beeline是hive新的命令列客戶端工具。hive客戶端工具後續將使用beeline 替代hivecli 並且後續版本...

spark連線預設hive資料庫

在配置和檢視配置之前先弄清楚兩個概念 hive on spark hive預設在mr上跑,可改成在spark記憶體上跑 spark on hive 不管如何執行spark sql,預設讀取的hive資料庫,其實spark不是直接讀取hive資料庫,而是讀取hive元資料和hdfs,那就是要配置hiv...

Python庫之資料庫連線

資料庫連線可用於連線眾多資料庫以及訪問通用資料庫介面,可用於資料庫維護 管理和增 刪 改 查等日常操作。1.mysql connector python 型別 第三方庫 描述 mysql官方驅動連線程式 推薦度 13.bsddb3 型別 第三方庫 描述 berkeley db連線庫 15.dbhas...