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 相关文章推荐
Python tempfile模块学习笔记(临时文件)
May 25 Python
python基于xml parse实现解析cdatasection数据
Sep 30 Python
全面了解python中的类,对象,方法,属性
Sep 11 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python入门前的第一课 python怎样入门
Mar 06 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
Python实现微信好友的数据分析
Dec 16 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
使用gunicorn部署django项目的问题
Dec 30 Python
pandas 按日期范围筛选数据的实现
Feb 20 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伪静态写法附代码
2008/06/20 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
新学期开学标语
2014/06/30 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
Python基础之元类详解
2021/04/29 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js