IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hive:统计hive中所有表的大小和创建时间 -> 正文阅读

[大数据]hive:统计hive中所有表的大小和创建时间

目的:获取hive中所有表的创建时间和表大小

本文给出了一个既可以统计hive中非分区表也可以统计分区表的表大小的方式。
由于业务上没有针对分区数据统计的需求,所以可以使用此种方式统计。
如果业务需要统计分区数据,这种方式就不合适了。

1、获取hive当前的表创建时间和表名

在hive的元数据存储数据库中执行(当前为mysql):

SELECT	CREATE_TIME,TBL_NAME FROM	TBLS ;

结果文件存储在:all_tables_name_createTime.txt(内容见第3点)

2、获取当前hdfs中hive库表存储路径和大小

hive_data_size_count.sh

#!/bin/env bash
HIVE_WAREHOUSE=/user/hive/warehouse
ALL_DATABASES=(`hdfs dfs -ls ${HIVE_WAREHOUSE} | awk '{print $8}'`)

for i in ${!ALL_DATABASES[@]}
do
 echo "当前库${ALL_DATABASES[i]}的大小:"
 hdfs dfs -du -h ${HIVE_WAREHOUSE} | grep ${ALL_DATABASES[i]}
 echo "当前库内表的大小"
 hdfs dfs -du -h ${ALL_DATABASES[i]}
 echo -e "\n\n"
done

结果文件存储在:hive_data_count6(文件内容见第4点)

3、将1中获取的hive创建时间转换为易读性好的格式

脚本名称:changeTimeFormat.sh
将有两列字段——hive表创建的时间(时间戳形式)、hive表名——的文件中,时间戳修改为阅读友好型的年月日时分秒形式。

#!/bin/env bash
while read line
do
 echo $line
 TIMESTAMP=`echo $line | awk '{print $1}'`
 TABLE_NAME=`echo $line | awk '{print $2}'`
 if [[ $TIMESTAMP -ne "CREATE_TIME" ]];then
 # 格式为:年月日|时分秒,之所以使用|作为间隔符,是因为文件是以\t制表符作为间隔,防止空格和制表符在使用echo命令时候无法将时间以整个字段进行分隔
 TIME_FORMAT=`date -d @$TIMESTAMP "+%Y-%m-%d|%H:%M:%S"`
 else
 TIME_FORMAT="CREATE_TIME"
 fi
 echo -e "$TIME_FORMAT\t$TABLE_NAME" >> all_tables_name_createTimeFormat.txt
done <all_tables_name_createTime.txt

源文件:all_tables_name_createTime.txt文件示例(间隔符是\t,制表符)

CREATE_TIME TBL_NAME
1618910542 yjj_bzy
1619074492 ods_yjj_bzy
1619075278 stg_yjj_bzy
1620637222 wxm_ods_test_2021_5_10

结果文件:all_tables_name_createTimeFormat.txt (间隔符是\t,制表符)

CREATE_TIME TBL_NAME
2021-04-20|17:22:22 yjj_bzy
2021-04-22|14:54:52 ods_yjj_bzy
2021-04-22|15:07:58 stg_yjj_bzy
2021-05-10|17:00:22 wxm_ods_test_2021_5_10

4、获得表的创建时间和大小

脚本名称:combineNameTimeSize.sh
脚本目的是从hdfs的/user/hive/warehouse目录中得到的表内容中获取hive元数据中实际存在的hive表的大小和创建时间

#!/bin/env bash

# bei pipei de wenjian
SOURCE_FILE=all_tables_name_createTimeFormat.txt
FILTER_FILE="hive_data_count6"
RESOUT_FILE=hive_table_name_size_time.txt

while read line
do
 TIME=`echo $line | awk '{print $1}'`
 TABLE_NAME=`echo $line | awk '{print $2}'`

 HIVE_TABLE_SIZE_PATH=`cat $FILTER_FILE | grep $TABLE_NAME`
 TABLE_SIZE=`echo $HIVE_TABLE_SIZE_PATH | awk '{print $1}'`
 HDFS_PATH=`echo $HIVE_TABLE_SIZE_PATH | awk '{print $2}'`

 if [[ "$TIME" -eq "CREATE_TIME" ]];then
 echo -e "$TIME\t$TABLE_NAME\tTABLE_SIZE\tHDFS_PATH" >> $RESOUT_FILE
 else
 echo -e "$TIME\t$TABLE_NAME\t$TABLE_SIZE\t$HDFS_PATH" >> $RESOUT_FILE
 fi
done < $SOURCE_FILE

被过滤的hdfs数据文件:hive_data_count6
(数据获取方式:hdfs dfs -du -h /user/hive/warehouse)

37.1K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_gc_info_i_y
12.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_gdccrb_i_d
7.6K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_gdfsfdcrb_i_d
4.2K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_xlljjsczrb_i_d
5.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_xlslyczqkrb_i_d
12.9K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_hw_yjswclzxclrb_a_d
10.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_js_ssljflxqinfo_i_d
2.7K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_js_vehicleinfo_i_m
1.8M /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_sr_store_i_d
13.9K /user/hive/warehouse/dwd_cgj.db/cgj_ods_s_csglj_zxc_station_a_d

结果数据:hive_table_name_size_time.txt

CREATE_TIME TBL_NAME TABLE_SIZE HDFS_PATH
2021-04-20|17:22:22 yjj_bzy 27.1K /user/hive/warehouse/ods.db/ods_yjj_bzy
2021-04-22|14:54:52 ods_yjj_bzy 27.1K /user/hive/warehouse/ods.db/ods_yjj_bzy
2021-04-22|15:07:58 stg_yjj_bzy 636.7K /user/hive/warehouse/stg.db/stg_yjj_bzy
2021-05-10|17:00:22 wxm_ods_test_2021_5_10 117.1K /user/hive/warehouse/test_hive2.db/wxm_ods_test_2021_5_10
2021-05-10|11:11:53 t_czfwjcxxb_wxm 1.1M /user/hive/warehouse/ods_zfw.db/t_czfwjcxxb_wxm

5、将hive_table_name_size_time.txt文件的内容拷贝到excel表格中,即可形成4列的数据表,便于数据统计

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:08:12  更:2022-03-06 13:10:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:46:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码