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

该博客主要介绍了如何实现Hive的自动化备份,包括编写bash脚本,设置crontab定时任务,以及备份文件的目录结构。同时,还涉及到数据统计的部分,如文本处理、Excel输出和MySQL表信息的统计。整个流程确保了数据的安全性和分析的准确性。
摘要由CSDN通过智能技术生成

目录

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:

根据具体需求匹配等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值