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计算三角函数之asin()方法的使用
May 15 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
解读python logging模块的使用方法
Apr 17 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
pandas取出重复数据的方法
Jul 04 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
python3读取文件指定行的三种方法
May 24 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+mysql大量用户登录解决方案分析
2014/12/29 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
活动策划求职信模板
2014/04/21 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
少先队工作总结2015
2015/05/13 职场文书
公司行政管理制度范本
2015/08/05 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js