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语言的12个基础知识点小结
Jul 10 Python
python多重继承新算法C3介绍
Sep 28 Python
Python类的用法实例浅析
May 27 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
python对离散变量的one-hot编码方法
Jul 11 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
python计算n的阶乘的方法代码
Oct 25 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
Python selenium实现断言3种方法解析
Sep 08 Python
python实现邮件循环自动发件功能
Sep 11 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 Python
在python中对于bool布尔值的取反操作
Dec 11 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检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python实现三次样条插值
2018/12/17 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python程序如何进行保存
2020/07/03 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
Delphi笔试题
2016/11/14 面试题
员工培训邀请函
2014/02/02 职场文书
教师个人自我评价范文
2014/04/13 职场文书
小学庆六一活动总结
2014/08/28 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android