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算法之栈(stack)的实现
Aug 18 Python
Python实现简单登录验证
Apr 13 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
基于python中的TCP及UDP(详解)
Nov 06 Python
详解appium+python 启动一个app步骤
Dec 20 Python
python爬虫使用cookie登录详解
Dec 27 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
Python切片操作实例分析
Mar 16 Python
python实现梯度下降算法
Mar 24 Python
Flask-WTF表单的使用方法
Jul 12 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
Python Dataframe常见索引方式详解
May 27 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
浅析php创建者模式
2014/11/25 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
php实现数字补零的方法总结
2018/09/12 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
Python中操作mysql的pymysql模块详解
2016/09/13 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android