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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
Python 元组(Tuple)操作详解
Mar 11 Python
Python异常处理总结
Aug 15 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
自学python的建议和周期预算
Jan 30 Python
python sort、sort_index方法代码实例
Mar 28 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
Python接口自动化判断元素原理解析
Feb 24 Python
python生成word合同的实例方法
Jan 12 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 && 逻辑与运算符使用说明
2010/03/04 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
element-ui表格数据转换的示例代码
2018/08/24 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python实现图像拼接功能
2020/03/23 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
幼儿园消防安全制度
2014/01/26 职场文书
统计系教授推荐信
2014/02/28 职场文书
师恩难忘教学反思
2014/04/27 职场文书
导航工程专业自荐信
2014/09/02 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
python的html标准库
2022/04/29 Python