python導(dǎo)出hive數(shù)據(jù)表的schema實例代碼
本文研究的主要問題是python語言導(dǎo)出hive數(shù)據(jù)表的schema,分享了實現(xiàn)代碼,具體如下。
為了避免運營提出無窮無盡的查詢需求,我們決定將有查詢價值的數(shù)據(jù)從mysql導(dǎo)入hive中,讓他們使用HUE這個開源工具進(jìn)行查詢。想必他們對表結(jié)構(gòu)不甚了解,還需要為之提供一個表結(jié)構(gòu)說明,于是編寫了一個腳本,從hive數(shù)據(jù)庫中將每張表的字段即類型查詢出來,代碼如下:
#coding=utf-8
import pyhs2
from xlwt import *
hiveconn = pyhs2.connect(host='10.46.77.120',
port=10000,
authMechanism='PLAIN',
user='hadoop',
database='hibiscus_data',
)
def create_excel():
sql = 'show tables'
tables = []
with hiveconn.cursor() as cursor:
cursor.execute(sql)
res = cursor.fetch()
for table in res:
tables.append(table[0])
tableinfo = []
for table in tables:
tableinfo.append(get_column_info(table))
create_excel_ex(tableinfo)
def create_excel_ex(tableinfo):
w = Workbook()
sheet = w.add_sheet(u'表結(jié)構(gòu)')
row = 0
for info in tableinfo:
row = write_tale_info(info,sheet,row)
w.save('hive_schema.xls')
def write_tale_info(tableinfo,sheet,row):
print row
sheet.write_merge(row,row,0,2,tableinfo['table'])
row += 1
sheet.write(row,0,u'名稱')
sheet.write(row,1,u'類型')
sheet.write(row,2,u'解釋')
row += 1
fields = tableinfo['fields']
for field in fields:
sheet.write(row,0,field['name'])
sheet.write(row,1,field['type'])
row += 1
return row + 1
def get_column_info(table):
sql = 'desc {table}'.format(table=table)
info = {'table':table,'fields':[]}
with hiveconn.cursor() as cursor:
cursor.execute(sql)
res = cursor.fetch()
for item in res:
if item[0] == '':
break
info['fields'].append({'name':item[0],'type':item[1]})
return info
if __name__ == '__main__':
create_excel()
其實,我們的hive數(shù)據(jù)庫將所有的元數(shù)據(jù)存儲在了mysql當(dāng)中,分析這些元數(shù)據(jù)也可以獲得表結(jié)構(gòu)信息。
總結(jié)
以上就是本文關(guān)于python導(dǎo)出hive數(shù)據(jù)表的schema實例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
windows環(huán)境下tensorflow安裝過程詳解
這篇文章主要為大家詳細(xì)介紹了windows環(huán)境下tensorflow安裝過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Python中基礎(chǔ)數(shù)據(jù)類型 set集合知識點總結(jié)
在本篇文章里小編給大家總結(jié)了一篇關(guān)于Python中基礎(chǔ)數(shù)據(jù)類型 set集合知識點總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-08-08
編寫同時兼容Python2.x與Python3.x版本的代碼的幾個示例
這篇文章主要介紹了編寫同時兼容Python2.x與Python3.x版本的代碼的幾個示例,在Python2.7.x的更新中由于采用了某些Python3中的代碼編寫特性、使得在有些原本不同之處編寫兼容性代碼成為可能,需要的朋友可以參考下2015-03-03

