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操作ssh实现服务器日志下载的方法
Jun 03 Python
Python回调函数用法实例详解
Jul 02 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
python主线程捕获子线程的方法
Jun 17 Python
python使用thrift教程的方法示例
Mar 21 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
python3 sqlite3限制条件查询的操作
Apr 07 Python
Python图像处理之图像拼接
Apr 28 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
vue组件name的作用小结
2018/05/23 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
js实现简单放大镜效果
2020/03/07 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
python处理cookie详解
2014/02/07 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
使用Python实现分别输出每个数组
2019/12/06 Python
python实现字典嵌套列表取值
2019/12/16 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
社区国庆节活动方案
2014/02/05 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript