python导出hive数据表的schema实例代码


Posted in Python onJanuary 22, 2018

本文研究的主要问题是python语言导出hive数据表的schema,分享了实现代码,具体如下。

为了避免运营提出无穷无尽的查询需求,我们决定将有查询价值的数据从mysql导入hive中,让他们使用HUE这个开源工具进行查询。想必他们对表结构不甚了解,还需要为之提供一个表结构说明,于是编写了一个脚本,从hive数据库中将每张表的字段即类型查询出来,代码如下:

#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'表结构') 
  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数据库将所有的元数据存储在了mysql当中,分析这些元数据也可以获得表结构信息。

总结

以上就是本文关于python导出hive数据表的schema实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
Python中的yield浅析
Jun 16 Python
kNN算法python实现和简单数字识别的方法
Nov 18 Python
Python中functools模块的常用函数解析
Jun 30 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
对python函数签名的方法详解
Jan 22 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
python3.5安装python3-tk详解
Apr 26 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 #Python
一道python走迷宫算法题
Jan 22 #Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 #Python
python正则表达式及使用正则表达式的例子
Jan 22 #Python
Python深度优先算法生成迷宫
Jan 22 #Python
Python使用Tkinter实现机器人走迷宫
Jan 22 #Python
Python实现简单文本字符串处理的方法
Jan 22 #Python
You might like
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
jQuery 表格插件整理
2010/04/27 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python里隐藏的“禅”
2014/06/16 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
浅析Python函数式编程
2018/10/06 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
出国留学担保书
2014/05/20 职场文书
物业管理专业求职信
2014/06/11 职场文书
博士生求职信
2014/07/06 职场文书
初中优秀学生评语
2014/12/29 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
基于Go Int转string几种方式性能测试
2021/04/28 Golang
Python可视化学习之seaborn调色盘
2022/02/24 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫