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下载指定页面上图片的方法
May 12 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
Python 中Pickle库的使用详解
Feb 24 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
tensorflow 环境变量设置方式
Feb 06 Python
python 多线程死锁问题的解决方案
Aug 25 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
python APScheduler执行定时任务介绍
Apr 19 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
layui表格数据重载
2019/07/27 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
js实现简易计算器功能
2019/10/18 Javascript
Python打印斐波拉契数列实例
2015/07/07 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
如何客观的进行自我评价
2013/12/17 职场文书
安全检查管理制度
2014/02/02 职场文书
党务公开方案
2014/05/06 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
会议欢迎词范文
2015/01/27 职场文书
大学四年个人总结
2015/03/03 职场文书
酒店员工手册范本
2015/05/14 职场文书
入队仪式主持词
2015/07/04 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js