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 for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
使用Scrapy爬取动态数据
Oct 21 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
python如何把字符串类型list转换成list
Feb 18 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
分享7个 Python 实战项目练习
Mar 03 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
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
js中eval详解
2012/03/30 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
jQuery实现本地存储
2020/12/22 jQuery
python中文件变化监控示例(watchdog)
2017/10/16 Python
python 字典操作提取key,value的方法
2019/06/26 Python
三个python爬虫项目实例代码
2019/12/28 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
水电工岗位职责
2014/02/12 职场文书
采购意向书范本
2014/03/31 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
刑事和解协议书范本
2014/11/19 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
python中的被动信息搜集
2021/04/29 Python