思路

1、通过Hive元数据,获取到表和HDFS的对应关系
2、通过 pyhdfs工具类的get_content_summary方法 快速获取到占用HDFS大小

代码如下
# requirements.txt
MySQL-python==1.2.5
PyHDFS==0.2.1
torndb==0.3
#coding:utf-8
import pyhdfs
import torndbhive_host="localhost"
hive_port=3306
hive_database=""
hive_user=""
hive_pass=""hive_metadata_client = torndb.Connection("%s:%s" %(hive_host,hive_port), hive_database, user=hive_user, password=hive_pass, time_zone='+8:00')
hdfs_client = pyhdfs.HdfsClient("localhost:50070")def get_db_id_list():sql = "select DB_ID, NAME from DBS"sql_result = hive_metadata_client.query(sql)db_id_list = []for elem in sql_result:db_id = int(elem["DB_ID"])db_name = str(elem["NAME"])db_id_list.append((db_id, db_name))return db_id_listdef get_sd_id_list(db_id):sql = "select SD_ID, TBL_NAME from TBLS where DB_ID=%s" % db_idsql_result = hive_metadata_client.query(sql)sd_id_list = []for elem in sql_result:sd_id = int(elem["SD_ID"])table_name = str(elem["TBL_NAME"])sd_id_list.append((sd_id, table_name))return sd_id_listdef get_table_location(sd_id):sql = "select LOCATION from SDS where SD_ID=%s" % sd_idsql_result = hive_metadata_client.query(sql)location = Nonefor elem in sql_result:location = elem["LOCATION"]return locationdef get_hdfs_size(location):hdfs_size = 0try:if "tesla-cluster" in location:location = location.split("tesla-cluster")[1]summary_info_dict = hdfs_client.get_content_summary(location)if "length" in summary_info_dict:hdfs_size = summary_info_dict["length"]except Exception, e:print efinally:return hdfs_sizedef process():# 获取 所有数据库 db_iddb_id_list = get_db_id_list()table_size_dict = {}for db_id, db_name in db_id_list:# 获取 数据库下 所有表sd_id_list = get_sd_id_list(db_id)for sd_id, table_name in sd_id_list:# 找到 HIVE表 对应的 HDFS目录location = get_table_location(sd_id)hdfs_size = get_hdfs_size(location)table_full_name = db_name + "." + table_nametable_size_dict[table_full_name] = hdfs_sizejob_sorted_list = sorted(table_size_dict.items(), key=lambda d: d[1], reverse=True)[:100]print job_sorted_listif __name__ == "__main__":process()

HIVE表 占用HDFS空间 TOP表查询相关推荐

  1. 查询mysql数据库表占用空间大小_查看 MySQL 数据库中每个表占用的空间大小-阿里云开发者社区...

    如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...

  2. 查看 MySQL 数据库中每个表占用的空间大小

    我在做爬虫的过程中,刚刚爬了几万条数据,放在了mysql数据库里,于是想看看MySQL中这个数据库大小以及每个表的大小,于是进行了查阅,主要查到了说法,组合在一起赶紧特别的好,如下. 第一种: 如果想 ...

  3. 查看MySQL每个表占用的空间

    转载自:http://www.oschina.net/question/12_3673 查询MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_sche ...

  4. 查看MySQL数据库中每个表占用的空间大小

    如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...

  5. 查看MYSQL中数据表占用的空间

    由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...

  6. 查询DB中每个表占用的空间大小

    使用如下sql script可以获得每个数据库表所占用的空间大小,单位是KB create table #Data(name varchar(100),row varchar(100),reserve ...

  7. 查看MS SQL Server数据库每个表占用的空间大小

    参数说明见:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx create table #t(name varchar(255), rows ...

  8. 【转载】查看MSSQL数据库每个表占用的空间大小的方法

    sp_spaceused 显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法 sp_spaceused [[@objname =] 'objn ...

  9. Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引

    一.创建空间表 创建一个空间表tbsvrc_buffer_t ,SQL如下: create table tbsvrc_buffer_t (   ID      VARCHAR2(50) not nul ...

最新文章

  1. 应用指定显示到副屏_LED灯杆屏广泛应用逐渐成为智慧城市信息化的重要窗口
  2. 一个做得很好的电子产品测评类网站:Zealer
  3. jquery weui 图片浏览器Photo Browser 如何使用?
  4. 二值图像数字水印技术的实现
  5. 计算机主机频率单位,计算机常见计量单位解析
  6. 千杯酒中检测那一杯毒酒的问题及思考
  7. Android真机连接局域网PC服务器的方法
  8. c语言何钦铭,C语言 何钦铭
  9. VMware ESXI 下虚拟机时间问题
  10. 基于Nonebot2搭建QQ机器人(二):插件使用
  11. Weight the Tree CodeForces - 1646D
  12. Python 数据扩充(亮度、翻转、噪声)
  13. Linux下嵌入式开发环境配置
  14. js三级联动之地域的选择
  15. 小猫咪研学之K8S基本介绍
  16. CKEditor5 集成 Vue
  17. 谁是消费金融场景之王?
  18. mybatis plus忽略实体类中某一个字段的映射
  19. 【学习笔记】认知神经科学
  20. Java/JS 日语全半角,平片假名转换

热门文章

  1. summernote禁止图片视频上传
  2. 三类邮件系统PK谁最安全方便管理
  3. 利用Visual Studio为X86程序开启大内存的方法
  4. Vue.js引入echarts、elementUI、museUI、mintUI
  5. Another git process seems to be running in this repository, e.g. an editor opened by ‘git commit‘. .
  6. 地理信息安全在线培训考试题库-判断题
  7. hbuildx打包成apk_HBuilderX生成本地打包App资源
  8. 树莓派-无屏幕安装官方系统及配置
  9. IndexOf与substring的使用
  10. 无心剑中译里尔克《秋日》