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中的函数编程
Apr 13 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
Python 基础教程之包和类的用法
Feb 23 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
python批量赋值操作实例
Oct 22 Python
python实现微信防撤回神器
Apr 29 Python
Python使用Pandas库常见操作详解
Jan 16 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
python函数中将变量名转换成字符串实例
May 11 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
python中如何使用虚拟环境
Oct 14 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中static静态变量的使用方法详解
2010/06/04 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
python实现代理服务功能实例
2013/11/15 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
移动端HTML5开发神器之vconsole详解
2020/12/15 HTML / CSS
教师自我评价范文
2013/12/16 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
入学申请自荐信范文
2014/02/26 职场文书
学校联谊协议书
2014/09/16 职场文书
答辩状格式范本
2015/05/22 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL