python導(dǎo)出hive數(shù)據(jù)表的schema實(shí)例代碼
本文研究的主要問(wèn)題是python語(yǔ)言導(dǎo)出hive數(shù)據(jù)表的schema,分享了實(shí)現(xiàn)代碼,具體如下。
為了避免運(yùn)營(yíng)提出無(wú)窮無(wú)盡的查詢需求,我們決定將有查詢價(jià)值的數(shù)據(jù)從mysql導(dǎo)入hive中,讓他們使用HUE這個(gè)開(kāi)源工具進(jìn)行查詢。想必他們對(duì)表結(jié)構(gòu)不甚了解,還需要為之提供一個(gè)表結(jié)構(gòu)說(shuō)明,于是編寫了一個(gè)腳本,從hive數(shù)據(jù)庫(kù)中將每張表的字段即類型查詢出來(lái),代碼如下:
#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()
其實(shí),我們的hive數(shù)據(jù)庫(kù)將所有的元數(shù)據(jù)存儲(chǔ)在了mysql當(dāng)中,分析這些元數(shù)據(jù)也可以獲得表結(jié)構(gòu)信息。
總結(jié)
以上就是本文關(guān)于python導(dǎo)出hive數(shù)據(jù)表的schema實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
利用python將json數(shù)據(jù)轉(zhuǎn)換為csv格式的方法
下面小編就為大家分享一篇利用python將json數(shù)據(jù)轉(zhuǎn)換為csv格式的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03python3實(shí)現(xiàn)的zip格式壓縮文件夾操作示例
這篇文章主要介紹了python3實(shí)現(xiàn)的zip格式壓縮文件夾操作,結(jié)合實(shí)例形式分析了Python3基于zipfile模塊實(shí)現(xiàn)zip格式文件壓縮的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08python實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)的井字棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)的井字棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04關(guān)于Pycharm配置翻譯插件Translation報(bào)錯(cuò)更新TTK失敗不能使用的問(wèn)題
這篇文章主要介紹了關(guān)于Pycharm配置翻譯插件Translation報(bào)錯(cuò)更新TTK失敗不能使用的問(wèn)題,本文通過(guò)圖文并茂的形式給大家分享解決方案,需要的朋友可以參考下2022-04-04使用Python快速打開(kāi)一個(gè)百萬(wàn)行級(jí)別的超大Excel文件的方法
這篇文章主要介紹了使用Python快速打開(kāi)一個(gè)百萬(wàn)行級(jí)別的超大Excel文件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03python中count函數(shù)知識(shí)點(diǎn)淺析
在本篇文章里小編給大家整理了一篇關(guān)于python中count函數(shù)知識(shí)點(diǎn)淺析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-12-12python取數(shù)作為臨時(shí)極大值(極小值)的方法
今天小編就為大家分享一篇python取數(shù)作為臨時(shí)極大值(極小值)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10