HIVE表 占用HDFS空间 TOP表查询
思路
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表查询相关推荐
- 查询mysql数据库表占用空间大小_查看 MySQL 数据库中每个表占用的空间大小-阿里云开发者社区...
如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...
- 查看 MySQL 数据库中每个表占用的空间大小
我在做爬虫的过程中,刚刚爬了几万条数据,放在了mysql数据库里,于是想看看MySQL中这个数据库大小以及每个表的大小,于是进行了查阅,主要查到了说法,组合在一起赶紧特别的好,如下. 第一种: 如果想 ...
- 查看MySQL每个表占用的空间
转载自:http://www.oschina.net/question/12_3673 查询MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_sche ...
- 查看MySQL数据库中每个表占用的空间大小
如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...
- 查看MYSQL中数据表占用的空间
由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...
- 查询DB中每个表占用的空间大小
使用如下sql script可以获得每个数据库表所占用的空间大小,单位是KB create table #Data(name varchar(100),row varchar(100),reserve ...
- 查看MS SQL Server数据库每个表占用的空间大小
参数说明见:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx create table #t(name varchar(255), rows ...
- 【转载】查看MSSQL数据库每个表占用的空间大小的方法
sp_spaceused 显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法 sp_spaceused [[@objname =] 'objn ...
- Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引
一.创建空间表 创建一个空间表tbsvrc_buffer_t ,SQL如下: create table tbsvrc_buffer_t ( ID VARCHAR2(50) not nul ...
最新文章
- 应用指定显示到副屏_LED灯杆屏广泛应用逐渐成为智慧城市信息化的重要窗口
- 一个做得很好的电子产品测评类网站:Zealer
- jquery weui 图片浏览器Photo Browser 如何使用?
- 二值图像数字水印技术的实现
- 计算机主机频率单位,计算机常见计量单位解析
- 千杯酒中检测那一杯毒酒的问题及思考
- Android真机连接局域网PC服务器的方法
- c语言何钦铭,C语言 何钦铭
- VMware ESXI 下虚拟机时间问题
- 基于Nonebot2搭建QQ机器人(二):插件使用
- Weight the Tree CodeForces - 1646D
- Python 数据扩充(亮度、翻转、噪声)
- Linux下嵌入式开发环境配置
- js三级联动之地域的选择
- 小猫咪研学之K8S基本介绍
- CKEditor5 集成 Vue
- 谁是消费金融场景之王?
- mybatis plus忽略实体类中某一个字段的映射
- 【学习笔记】认知神经科学
- Java/JS 日语全半角,平片假名转换
热门文章
- summernote禁止图片视频上传
- 三类邮件系统PK谁最安全方便管理
- 利用Visual Studio为X86程序开启大内存的方法
- Vue.js引入echarts、elementUI、museUI、mintUI
- Another git process seems to be running in this repository, e.g. an editor opened by ‘git commit‘. .
- 地理信息安全在线培训考试题库-判断题
- hbuildx打包成apk_HBuilderX生成本地打包App资源
- 树莓派-无屏幕安装官方系统及配置
- IndexOf与substring的使用
- 无心剑中译里尔克《秋日》