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常规方法实现数组的全排列
Mar 17 Python
在Python中使用matplotlib模块绘制数据图的示例
May 04 Python
Python中random模块用法实例分析
May 19 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
用于业余项目的8个优秀Python库
Sep 21 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
python下载库的步骤方法
Oct 12 Python
python批量处理txt文件的实例代码
Jan 13 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php读取xml实例代码
2010/01/28 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
php中static和const关键字用法分析
2016/12/07 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python日期时间Time模块实例详解
2019/04/15 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
美国网上书店:Barnes & Noble
2018/08/15 全球购物
金融系应届毕业生求职信
2014/05/26 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers