栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive表结构备份以及Hive数据统计

Hive表结构备份以及Hive数据统计

目录

Hive备份:

1.main脚本:

2.目录结构:

3.设置crontab:

数据统计:

1.初处理备份文本:

2.1ETL处理第一步的文件:

文本文件输入:

Excel输出:

2.2附:统计Mysql表信息:

3.根据具体需求使用Excel做vlookup:


Hive备份:

1.main脚本:
#!/bin/bash


#生成昨天的日期,用作备份的文件名

YMD=`date -d yesterday +%Y%m%d`

#日志存储地址

log_dir=/home/hdfs/lyg/bak_hive_sh/logs/backup.logs

#备份文件存储地址

bakFile=/home/hdfs/lyg/bak_hive_sh/bakFile


echo `date` >> $log_dir


#定义一些其他临时文件地址

tempFile=/home/hdfs/lyg/bak_hive_sh/tmp/temp.txt

tableFile=/home/hdfs/lyg/bak_hive_sh/tmp/tables.txt

databaseFile=/home/hdfs/lyg/bak_hive_sh/tmp/databases.txt


function init (){

        echo "" > $tableFile

        echo "" > $databaseFile



}


init


#拿到所有数据库

hive -e "show databases ;" > $tempFile

#进行数据库过滤,下面是过滤掉了default和tmp以及名称为空格的数据库

grep -Ev "default|tmp|^$" $tempFile > $databaseFile


#拼接show tables in aDatabases;语句,然后再拼接show create table aTable;进临时文件

for k_id in `cat $databaseFile`;do

        echo $k_id

        #echo $k_id > $tableFile

        #hive -e "show tables in $k_id like 'tmp_*'" ; >> $tableFile

        hive -e "show tables in $k_id  ;" | while read line

        do
                #echo ${#line}

                #if [ ${#line} -eq 36 ];then

                        #echo "show create table $k_id"."'`'$line'`' ;" >> $tableFile

                        echo "show create table `$k_id`"."`$line` ;" >> $tableFile

                #fi
        done

        #hive -e "desc $k_id ;" > $

done

#批量执行show create 语句,入备份文档

hive -f $tableFile > $bakFile'/'$YMD


#获得备份文件中的最大文件数量

#total_file_num=`ls -l $bakFile | grep "^-" | wc -l`

#如果文件数量大于6个,将文件按时间排序,然后删除最早的那一个

#if [[ $total_file_num > 6  ]];then

#        filename=`ls -ltr $bakFile | grep -v 'total' | grep "^-" | awk '{print $9}' | head -n 1`

#        rm -rf $bakFile/$filename

#fi

2.目录结构:

[hdfs@sdc1 bak_hive_sh]$ pwd

/home/hdfs/lyg/bak_hive_sh

[hdfs@sdc1 bak_hive_sh]$ tree

├── bakFile

│   ├── 20211013

│   ├── 20211014

│   ├── 20211015

│   ├── 20211016

│   ├── 20211017

│   └── 20211018

├── logs

│   └── backup.logs

├── main.sh

└── tmp

    ├── databases.txt

    ├── tables.txt

    └── temp.txt

3.设置crontab:

每天22点49分执行脚本:

49 22 * * * sh /home/hdfs/lyg/bak_hive_sh/main.sh

数据统计:

数据统计是基于Hive那天的表结构的,前提是,你的hive库进行了analysis,不然是不准确的。

1.初处理备份文本:
cat 20210905 | grep -E "CREATE TABLE|numRows|rawDataSize|totalSize" > aa.txt
cat aa.txt | sed 's/[(,`]//g' |sed ":a;N;s/n//g;ta" | sed 's/CREATE TABLE /n/g' | sed "s/'//g" | sed 's/s//g' | sed 's/numRows=/t/g' | sed 's/rawDataSize=/t/g' | sed 's/totalSize=/t/' > res.txt

2.1ETL处理第一步的文件:

文本文件输入:

 

 

Excel输出:

 

 

2.2附:统计Mysql表信息:
SELECt

   CONCAt(TABLE_SCHEMA,'.',TABLE_NAME) as tableName,

   CAST(TABLE_ROWS as CHAR) as numRows,

   CAST(DATA_LENGTH as CHAR) as rawDataSize ,

   CAST(DATA_LENGTH+INDEX_LENGTH as CHAR) as totalSize

FROM

    information_schema.TABLES

WHERe

    TABLE_SCHEMA in ('dzzz','rk')

 

 

3.根据具体需求使用Excel做vlookup:

根据具体需求匹配等。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号